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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
6 w$ ?+ O% S1 Q! p. m) q; e
  1. #include- w. Y( S* f# M
  2. #include
    . K' u: _- C0 F* i
  3. #include
    # s/ T/ b3 x. P" W6 t/ f! `9 S" K3 @
  4. #include
    4 F) m7 E; u8 u% D
  5. #include
    ' m. X/ k; \8 h8 u. ^
  6. #include
    5 {& ?- f% [8 m/ Q& {
  7. #include
    1 Z1 u$ y# h" E% ^* _& G6 m
  8. #include
复制代码

& p4 e4 }: j8 @& h# f( P( @4 Q5 X) {
服务器代码如下:  M" ]6 q4 F3 _# e0 b) v6 i% x6 b6 g- A  Q
  1. #include' f3 S% U* v5 C  l! p2 s
  2. #include
    , r* s" [+ p* `# H, u: P7 c9 s
  3. #include
    , H4 J- z8 t2 I* Z' N) C: }
  4. #include" ^$ I( w. q4 X4 m
  5. #include
    1 l: {! q+ Q4 t( S" w
  6. #include5 ?1 j( K8 _& c8 g4 D
  7. #include
    ; F  n  X$ q" H, W8 |6 K% z4 M) a
  8. #include
复制代码
8 C7 q3 z% `7 l5 p) u! l, x% x1 K

2 `  ~* Z, ?6 s. |( `' G8 e/ M7 }2 K7 G9 D) l
4 J- K# m. i8 A7 y5 W: M' T5 O2 ]0 _

/ _+ d- H7 X, H: ]
" ]% [$ G8 e1 B% i
) x1 |( R* r1 x! D0 _( g
$ J# e! [/ g9 B. k4 o' X
9 f0 W, V* P0 O+ M; ?
# S( b' n! M: E( C# L

4 i% C; S0 l  z: x. C& X
7 a' u% v. B: f! r& q  [- C( s
9 g8 @  \6 U9 Y9 D+ V  r
* b2 l! A6 K! A- m# b% U9 d" X

8 z2 Q! m' D$ z8 P# S- Q

2 G/ R  k0 i) v  {. A
2 m8 g/ S8 U2 J
# Q% R) X9 b0 c$ P5 M; x4 W

+ g2 ?' U6 J9 [; J

  g6 g, E  c  m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
' }5 T& @* O. t) e) a7 c#include <sys/types.h> 
0 b( y( I0 t  R: p+ @#include <sys/socket.h> 
! O0 B6 \* }3 ^1 ~% g' d4 {#include <unistd.h> 
, l& d# k+ X9 E# F' Q#include <netinet/in.h> 9 m  t3 T) [* N, |( `9 V/ B, T' m( k
#include <arpa/inet.h> 
1 v& a7 G- n: f$ s#include <string.h> 
# \5 G1 @, d$ \5 X( r- q/ O$ d6 @# p2 q#include <stdio.h>  & N: i, C8 T0 U, _  B* \
int main() {
8 g. X, ^% |5 m4 @        int sockClient;
" q. ~' ^- e5 |6 Y- @; v        struct sockaddr_in addrSrv;
1 f3 ]' z& {; r; Z        sockClient = socket(AF_INET,SOCK_DGRAM,0);/ w* y$ j1 G/ Q
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");* d$ \* z% f/ V8 j& s( {
        addrSrv.sin_family=AF_INET;
- S+ j5 V% i! x) r8 a" b( `        addrSrv.sin_port=htons(6000);
0 v1 i1 e" _8 N6 J' ?        while(1)
; Y# \, }! X+ B! [! o+ N& o        {" [: B$ P: t6 `* e
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));, d% X* h- X9 A) H
                sleep(2);( d) y: P+ s8 q$ F9 z& T7 n& l
        }    & @: S: s% c6 }# ^/ [$ D  x
        close(sockClient);  ' G! H2 `, m* d: a3 y7 X2 H
        return 0; 
3 e- F- x4 Q5 c) L* m}
# |2 K3 g7 t9 F# L2 x& n9 l9 O7 N& ~
0 ^) q' K1 U6 D0 I  W; C" ?" @* }9 T. [& o: n7 f6 Q4 f9 Z
客户端:
  1. #include <stdio.h> 
    ; f2 u/ }6 f& G) \! |' V' R
  2. #include <sys/types.h> 
    : _7 D5 W& y1 r
  3. #include <sys/socket.h> 1 m" R. V+ J+ y2 d. r: d
  4. #include <netinet/in.h> - m8 M$ `9 N+ z* \) Z
  5. #include <arpa/inet.h> 
    - p/ O( b5 _/ V
  6. #include <string.h> , a: _; S8 J2 `" `- J0 f4 a. s
  7. #include <unistd.h> 
    2 X. g3 ?. _1 N3 S& A6 n2 Z
  8. #include <fcntl.h> 
    " `# Q( {$ t9 x1 p1 Y) P
  9. #include <sys/time.h> * g2 i( r- R) y; x% f5 X. u) t
  10. #include <sys/select.h> $ R9 ~7 M: J; R4 _' _* P1 c
  11. #include <sys/ioctl.h>  
    ' G) K* g% i2 D  V
  12. int main() {
    ! r: d% e, _+ q1 U! ]
  13.         int sockSrv;$ C8 j& Q3 ]( m
  14.         struct sockaddr_in addrSrv;. k& O" C* R5 L) u: m* J% r
  15.         int len;
    9 ?% `* z6 b7 [6 j0 F
  16.         char recvBuf[100];. m. g! A) P, C/ H& E- [
  17.         scanf("%s",recvBuf);+ B/ O" E4 ]0 w
  18.         struct sockaddr_in addrClient;8 A. Q% t: v$ r- @1 @
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);/ ?: C$ B2 G* V( ^8 b
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);1 J$ K  k: @8 Q8 {( z4 z
  21.         addrSrv.sin_family = AF_INET;, ]7 C! R5 Q0 P# i) M
  22.         addrSrv.sin_port = htons(6000);2 p( P9 ]5 g2 ^& t$ U- W5 U( Z( H/ T
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    6 L0 g: g, G3 g3 f0 h9 c) B. p
  24.         len = sizeof(struct sockaddr);
    ( ^3 N3 R4 \# h& C) ?9 q
  25.         memset(recvBuf, 0, 100);
    - L0 M% u2 Y" }
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    # n+ ]& W- Z" M9 w; I* x1 m
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    + @4 M$ V& c  X9 y
  28.         printf("Client data is:%s\n",recvBuf);3 f, V5 Y+ X7 V  x5 Q+ e8 a- K
  29.         close(sockSrv);
    ( ?$ x' @9 d6 g1 X$ ]$ P  y
  30.         return 0;
    . Y! L9 {: X. k. h, c! G
  31. } 
复制代码

0 g- s3 O8 V& w( t0 A& o; Y- r1 x! i  N5 B4 f; d
: ]7 D4 U- ?$ M% X; M$ U. N' t1 z- N
; {9 D0 ^( w, K5 M
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-17 13:12 , Processed in 0.133359 second(s), 20 queries .

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