您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8391|回复: 1
打印 上一主题 下一主题

[C] C语言学习之Linux下TCP服务器与客户端的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:7 ?9 r4 K( E; {' N9 s$ E2 e
  1. #include% d( A/ P/ e! G- \7 `
  2. #include7 a! H2 G8 V' n9 }9 |0 m
  3. #include
    ! b) Q) p* P" r$ Z
  4. #include
    , |; e9 s: A) \9 E7 B& U
  5. #include
    8 x1 `2 S+ A4 A' }" P2 F' z% V
  6. #include
    " a1 ]# K4 l* K/ ]8 R
  7. #include
    & |3 [; G* @- X' A2 x
  8. #include
复制代码
) r. J! i# G, C- a( k+ p: d" w
+ @* c) N! d2 ]2 c+ I0 m2 J
服务器代码如下:
# I: Q+ G$ o! ]2 }: L6 z% i! r$ x
  1. #include2 y0 c9 k7 O7 k" X$ K3 }1 t
  2. #include1 A1 m% I4 ~  k
  3. #include
    & d/ T8 W/ O' A+ f
  4. #include0 `- y' d  Z. O' N% J* N
  5. #include, u6 t7 t0 t) u4 A' e
  6. #include/ Q- H1 U4 m' O* b7 B
  7. #include' a* h, `/ n9 @% W8 Y
  8. #include
复制代码

- x/ b- t; M9 I3 M
) `  f6 D5 T1 k9 N2 u4 r* E+ _: ]6 ^# Y  a$ |0 c1 d, S
+ o4 {) ^' C( u% [; O3 d' C4 S

, I7 k7 p  i  `) l( |" N

# Q6 Z+ d( l! e) y" g2 L2 \5 }. U' D
) Q: k- t) m/ A
& \$ ?7 t& k8 Z

8 u9 W( v2 [* I) D! c& P8 `! R: ?

: d4 n4 g- }# c6 c7 W
' v1 E. t3 }+ D
- S! S6 H8 d1 ]4 ^1 f) Z
! p7 a3 L5 D) o- H5 |% M  S( s

3 n0 ?/ `+ b/ T( ^1 _. {0 r9 q  i# N' n) ^  o
2 E! }( Q8 t7 }0 G: K! A. a/ v6 j

0 X4 E+ k, Y" p# z* n

, n' \/ r4 \3 {* h0 \1 X9 L$ K$ I! R7 {( b! z& C" x6 P; Z$ T

7 Q# j! i0 }! b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:  G2 q- r/ G" }
#include <sys/types.h> 0 R+ V- J5 @$ C; F
#include <sys/socket.h> 
3 s5 r% l7 \# t* [& p, n' ^#include <unistd.h> 
- {1 D: ~# z  S: ]5 R; c3 H#include <netinet/in.h> 7 p  A! ]6 Z& t' Q& V
#include <arpa/inet.h> ' x/ H+ C! }$ m; y3 E1 B. `1 M
#include <string.h> , A! [1 d1 U0 ]- s8 A5 E2 A/ D
#include <stdio.h>  
" O! }4 D7 [( [6 Kint main() {! |4 d( a) _) n" k' ?) z. A; [
        int sockClient;
, l. O# A! Q$ ?# x4 q        struct sockaddr_in addrSrv;
" |0 G7 N7 W; j: B( ^1 C- i: s6 W        sockClient = socket(AF_INET,SOCK_DGRAM,0);
' {4 v  n9 `( g4 ]2 R/ t        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");" t  J7 j) O+ |% F$ ?: {8 Z
        addrSrv.sin_family=AF_INET;
( F( }5 V3 w6 R8 K9 b        addrSrv.sin_port=htons(6000);  H' p8 e/ U/ b5 }
        while(1)/ ~. i' ]1 Z; H- L' O" o3 d; _4 m
        {
( U# _  b6 M7 J6 m+ s7 p$ r                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));  r# [6 O  o) T% {/ l& a7 I, \
                sleep(2);6 k/ h4 S) K* a7 P; J9 K
        }    
# x% a# A+ |1 @, [6 v        close(sockClient);  
& y2 \& g5 q& T        return 0; 5 b$ \: U/ A0 J+ P6 D9 |8 m
}
% l* T% o" }/ F$ r- o
' U, I; S/ _- l6 J9 k2 A0 c* R" j. ?. Z$ F: H+ M7 Z( X
客户端:
  1. #include <stdio.h> 
    9 W. @( \' x/ n& f" Y
  2. #include <sys/types.h> 2 _, A" Q$ V" M0 x
  3. #include <sys/socket.h> 
    ' l1 e( G0 e' ]; ]4 V
  4. #include <netinet/in.h> 
    ; d7 w9 n" V3 ?# `  G) `
  5. #include <arpa/inet.h> 
    # A. f. m! q, n& v$ D
  6. #include <string.h> 1 U3 Q( t' O* o6 G
  7. #include <unistd.h> ; K7 h$ @. w7 o* Z' I
  8. #include <fcntl.h> 
    ) j. G- t+ ?1 V' N1 N% ?* b6 N$ g
  9. #include <sys/time.h> 
    # \/ K+ Q+ x* N6 s1 }: K. H; E" w
  10. #include <sys/select.h> 1 T% D0 W, F- v
  11. #include <sys/ioctl.h>  ( V2 v2 q, |2 i. v
  12. int main() {
    + L$ s5 o& D! S& k+ u
  13.         int sockSrv;2 e7 y4 x# q5 w( l! H3 X
  14.         struct sockaddr_in addrSrv;
    ! _- X6 C$ J7 J4 B- C
  15.         int len;2 z( e5 o3 L3 g; S& z8 }
  16.         char recvBuf[100];
    4 h: o  z( x! @3 w# c
  17.         scanf("%s",recvBuf);
    ; n- [  r" X' f6 ?
  18.         struct sockaddr_in addrClient;# }# P" T, f4 l$ B4 Q
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    + Y+ c6 F& ~/ F
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);. p" w% k+ o1 C, w5 M2 M
  21.         addrSrv.sin_family = AF_INET;
    + C7 j) v" @5 Z( [2 [- N; |
  22.         addrSrv.sin_port = htons(6000);
    ; n, r/ v! r3 K7 X+ V$ d5 y
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    + C  l  l# o. L3 Q( b. J
  24.         len = sizeof(struct sockaddr);3 ~$ D$ @6 M3 J' k8 D: w
  25.         memset(recvBuf, 0, 100);
    + X# _+ Q( X! N% W: z
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    $ Z$ P" q' [5 Q( {# U
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));7 ?8 G  G* p' C6 H
  28.         printf("Client data is:%s\n",recvBuf);. Y  n! O9 j% P  b5 f# o
  29.         close(sockSrv);
    3 t# r2 E8 }6 J/ v, ~% A% |
  30.         return 0;1 a4 B( X+ e7 o  r; b
  31. } 
复制代码
. |- Q+ N6 c0 j+ z* P
2 Z& i3 N0 B" Q0 K4 N5 J; F6 S
$ B1 Z  I! u4 s
$ p8 h0 o! ]4 b1 M0 F6 L1 N9 V
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-17 15:26 , Processed in 0.119955 second(s), 20 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!