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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
/ n: g( K0 Y; S
  1. #include; M7 d  a7 v4 h( s
  2. #include
    : ]( _% L8 O' V  v' j. K
  3. #include% }8 Q; g( w8 \8 p
  4. #include
    , T$ v: w5 S" m% ~& j& B% x
  5. #include
    $ J1 n! y. Z+ r% ]$ r+ P) p- B! [
  6. #include
    / D1 o  e& M/ D
  7. #include
    / o. K* e# }( Q4 K' O- D
  8. #include
复制代码

! r$ R% p/ D/ \
, b$ Q6 z$ y# \! q/ M服务器代码如下:
5 Z$ E6 A. [5 `- Q( k$ y
  1. #include
    ' u9 a' k0 \+ Q5 i9 R& Q  m
  2. #include
    ! ?9 o. Z' L; J7 I# z4 N
  3. #include" W% }& c" H, T+ S9 U+ y
  4. #include
    & Z% E% X0 x$ F* z8 J7 _+ _
  5. #include
    % }7 d$ Y- S; }( a4 m# V
  6. #include# J5 [7 }7 q# U# Q: L( y' o% n
  7. #include
    : ~1 T# Q, y6 R9 N
  8. #include
复制代码
* V, ~7 g7 S; V6 G" p8 p

% g, i' H/ V2 C9 ^8 G
9 V& e9 n6 S- X% y! F/ k
1 S! h, ~$ z0 z$ H$ l2 g
: A8 Z" |4 j& \1 R. C. X

3 a5 a$ a1 k4 B' {8 z- r" j, _3 I
4 n3 u1 O6 B0 ]  s6 W( R- X
+ j4 [! }0 S* m

& d0 v% Q. D/ S. t+ M$ S8 ]5 e" b% c

( @3 `9 Y8 e6 o* c+ Z
2 H7 h( _# [& i7 _
: G& [( o' m2 ^3 u& H4 a5 e& v+ ?& H
4 e8 w0 Z: l9 a# D

! e% ]' v. g; Q" _: @" X/ x
/ @( @( ~: b5 a9 m
; H5 I9 W% n6 A4 _. Q
; p; Z: G+ l0 L
7 ^  Z) i% C0 l7 b( r
+ V. x! O- j# a- y( p

( F. I7 s2 L9 K$ b$ M; j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
2 a% e' m- q. t4 I) d4 h* O* O8 F: a! q#include <sys/types.h> 5 g( ]3 d' s: l. _5 {; M& B4 a; R
#include <sys/socket.h> % r) ^" ]# B1 E* c9 k
#include <unistd.h> 
. n+ b: I1 O- B! |0 j. x#include <netinet/in.h> 
5 a, ^  U' C5 ?" `! t" i#include <arpa/inet.h> 3 b9 r6 l. n3 x5 m; B$ X
#include <string.h> " V3 l: Y6 ^, C+ x& u
#include <stdio.h>  ; _( u# A! F) @* T
int main() {
2 Z/ b: g( e) s) S$ L. t        int sockClient;+ c( u4 |: H7 _2 h1 t. Q
        struct sockaddr_in addrSrv;
2 \1 _8 B4 y5 M        sockClient = socket(AF_INET,SOCK_DGRAM,0);
) T% `( u1 G) @, m6 I8 |  Y        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
5 {) O8 ^. l: j$ R  m" ?        addrSrv.sin_family=AF_INET;
/ O  q# k1 [) v8 G1 W        addrSrv.sin_port=htons(6000);/ U7 S5 J  Z. y- ?: G1 Y4 y4 w
        while(1)0 k) t" i7 g3 s
        {
  x4 C. g( ~" g, t                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
1 z1 N7 N' O3 l" a1 O' e6 z( ]                sleep(2);
& H  D# _2 T9 q! z- L        }      G6 \3 \. o; `" N  r' h- q
        close(sockClient);  
0 }, `* T' q7 `# T# V# n. S        return 0; : t: {# u/ O  j1 `  ]2 F
}
! W( I  L8 J* v- f1 B( q8 k$ _. w9 G4 D7 ?2 A
* o' [) M! |% q/ g
客户端:
  1. #include <stdio.h> + t& E/ s6 D5 ?3 g1 Q
  2. #include <sys/types.h> 
    ( Z' o$ y, i+ Y8 \$ E. P
  3. #include <sys/socket.h> 5 D8 j" a4 {2 C$ R! y5 n
  4. #include <netinet/in.h> 1 o' o& |1 p0 w) r  v8 w
  5. #include <arpa/inet.h> / [+ U. g, z3 [6 Q" c
  6. #include <string.h> 
    ' a9 v! w0 C# c; V9 W' P
  7. #include <unistd.h> 
    ; U4 g& X" G# E4 I
  8. #include <fcntl.h> . x2 b0 `! r* y, g' x9 R) m
  9. #include <sys/time.h> " x& f  U, e2 Q. O
  10. #include <sys/select.h> 
    6 m% \! P, w3 h- d  z  d
  11. #include <sys/ioctl.h>  : x2 `; t7 t; i6 [$ Y
  12. int main() {
    7 l( Q: k* n8 x, }& ?! b4 l; I! ~
  13.         int sockSrv;
    ' [4 f+ i4 o+ W" K/ L* C8 {" h
  14.         struct sockaddr_in addrSrv;
    ! _9 s# V6 k$ t2 }$ F
  15.         int len;
    3 a, ?4 O8 ~, @4 m" j" y
  16.         char recvBuf[100];
    7 b; y4 T) n' @6 z3 A0 Z
  17.         scanf("%s",recvBuf);
    0 {# T! \+ `4 S) j5 \# G/ m5 T2 Y
  18.         struct sockaddr_in addrClient;7 j# X5 u% i" ?$ A* L# Z
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);/ w3 x4 J7 k' K
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);# m' e3 z1 A( P  N2 c4 C& H
  21.         addrSrv.sin_family = AF_INET;
    9 O/ t0 o9 L3 A0 e; K8 n
  22.         addrSrv.sin_port = htons(6000);1 f+ f  d' w. l4 Y4 e
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    , U/ l: I; R4 q3 X* D3 M
  24.         len = sizeof(struct sockaddr);& J& Q$ j- t2 {) F7 b
  25.         memset(recvBuf, 0, 100);. H8 k3 O4 N" A* o1 H2 b
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    " C7 [: k9 ~2 H  U' {" H8 G( [( Z1 U
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
      y8 c. |9 Y$ |+ C2 a! j
  28.         printf("Client data is:%s\n",recvBuf);8 N8 M! R- g1 j2 M8 E
  29.         close(sockSrv);
    3 V: a2 m1 M6 [/ N7 l. h
  30.         return 0;% k  k9 \4 j+ }
  31. } 
复制代码

( `1 ]; _% F  P" Z/ K$ z$ t$ h1 x
$ W2 i( T  R4 g2 k# k' t; L3 h
* C9 N$ ?! s+ {5 F7 \6 r
  I1 C. I' _4 ]4 k  J- ~# n1 C; j
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 08:15 , Processed in 0.053003 second(s), 18 queries .

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