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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
客户端代码如下:
. m' v# g, v; ?  I4 T1 Q
  1. #include
    0 u5 y! C' ^$ T" [+ _. \' G
  2. #include) r; P+ t9 c3 r8 o& R! P1 ?
  3. #include' n% [7 h0 D% c! _; C4 _1 }
  4. #include
    & q+ @4 m$ d5 i3 k
  5. #include9 }. @5 v- c  A3 u7 f
  6. #include
    , ~9 b6 f% n6 `1 ]8 W8 R9 H% {( @8 [  \
  7. #include
    , ^! g0 J) M9 T) o2 i
  8. #include
复制代码

1 t& z1 G$ ?$ Z6 g* p& H" j1 E  j. H5 S* [: u" e! b
服务器代码如下:
7 |8 E+ A( R+ [9 T: L6 f$ }. m, z
  1. #include. \8 O' \  r+ v2 J* z7 [; E
  2. #include8 @+ ~9 \- m7 g# D8 P% a4 S
  3. #include
    ' i9 r$ Z1 u: k- H; ?6 A
  4. #include# J. }! \" k0 d1 A
  5. #include. X: f7 S$ D/ ]! b, K
  6. #include
    5 q$ {' L1 u4 V8 z
  7. #include* x9 R; ~; q. |7 h7 T
  8. #include
复制代码
1 M; Y" }) t( q- P0 C6 P& Y9 j9 X
4 |, Z* |2 E% g9 A. x

  J& P7 g9 i" |

, s5 \* M' t: F8 {3 g8 O$ w' G3 V/ I/ E! O# [9 q' p5 n- {
2 U9 D4 N8 e  C! w1 d

1 |, y* s! ^) T' V2 ~
) }# M) _3 ^9 C, }# W+ }5 O$ S) K

/ A" X$ b( r4 e7 n" z% O
  W  g7 q% U9 h3 |" q& O

) h7 P5 _( F% U& x2 A) f
/ m) M% E3 t( ]& k

2 R  W1 n; J- j( |5 X% E+ i; H

+ ?5 {2 A; r0 P6 O
9 ]; X) e# U, }) A
: ~; L8 s) m% u+ H- M0 M1 V( Y2 j
' g" T" ^# x# J0 q

7 n; T4 [4 P& I' n* V
2 K7 @2 y4 p  s$ @: ~% k  @0 ^6 i
0 O0 e0 R; L5 B+ T8 D* Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
* a8 o% b$ o, `5 U& C# Z#include <sys/types.h> 
. W$ ?' P) j$ i#include <sys/socket.h> 0 V3 [2 E; m) f: _3 ^1 a# t! k/ q
#include <unistd.h> 
% ]4 D- U2 M1 m% S$ Z9 G#include <netinet/in.h> ( @8 V# S: _& B3 ~3 P
#include <arpa/inet.h> 
, N& o$ B4 H5 F" z8 P, A/ i$ ^#include <string.h> # j7 e3 @; y2 s# R% ~* i7 L
#include <stdio.h>    b9 ^& P- K( q4 b" U; V7 O+ g
int main() {' K: S; o; V/ i, p0 f( r
        int sockClient;9 H2 X1 e- c7 r. b7 e7 X
        struct sockaddr_in addrSrv;3 {9 l% ^6 p9 U3 ^
        sockClient = socket(AF_INET,SOCK_DGRAM,0);. Y) M% X. b: T4 e- N  r; p6 y
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
1 R( L* p. ], v9 X' o        addrSrv.sin_family=AF_INET;$ I; j/ H% C/ t3 Z" g5 r0 a8 `
        addrSrv.sin_port=htons(6000);
' ~8 O, d: R( `/ b- m8 D$ G        while(1). @' O! h8 w/ k* e6 O
        {
1 S( \% I! _! a+ n                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
) Q0 A& y; I- W                sleep(2);2 a, T  C. ~& d; t9 J9 T) {, S
        }    
  N) w3 ~, w- p5 ~        close(sockClient);  
4 @& t( Y: X# L9 t. W        return 0; 
" r# J) s7 n/ n* g" t}
* n" C" U0 N9 E; r* G/ E. Y( F" a: f7 r/ ^# ?2 h1 j% u/ y5 V' `
! }3 a8 w; T$ ?- R& y: Y
客户端:
  1. #include <stdio.h> $ T; m' G/ ?) @0 N6 ]5 }6 ^
  2. #include <sys/types.h> 6 u$ `9 I. ?5 r9 ~& ^: \" j
  3. #include <sys/socket.h> ' A2 v! \7 D  x5 q* e1 B
  4. #include <netinet/in.h> & ^$ B4 S5 t* B6 ]
  5. #include <arpa/inet.h> 5 {) @+ r. ^3 B8 r4 ?
  6. #include <string.h> 
    2 v6 y& e/ `; z+ U1 n* N
  7. #include <unistd.h> 
    - F' s; E; e/ s9 k* G
  8. #include <fcntl.h> 
    + S. n& c; f! E
  9. #include <sys/time.h> 
    . V) n1 C/ D* U) i3 T
  10. #include <sys/select.h> " q6 R9 w! D. A6 B
  11. #include <sys/ioctl.h>  1 Z; }1 _( V- c' ~
  12. int main() {8 ^! a- K( x: }3 ]
  13.         int sockSrv;
    ' V6 q& o" u6 Q3 J. ]2 S  i$ r
  14.         struct sockaddr_in addrSrv;6 P! D. c" E" ]8 }
  15.         int len;
    ( e: d% ?# Y1 W" @4 g6 K1 K
  16.         char recvBuf[100];
    ) R8 X3 w3 B; i6 r+ @$ v
  17.         scanf("%s",recvBuf);
    + ?: u/ T+ h7 A( Y) c% s9 k
  18.         struct sockaddr_in addrClient;2 s* X* q& X0 D* x+ |  i$ s& M+ ~$ D
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    + J$ m8 H4 e% h
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    % ~3 X7 V6 z7 z5 f0 \- l
  21.         addrSrv.sin_family = AF_INET;
    6 u7 E; b" n" ]1 U( w
  22.         addrSrv.sin_port = htons(6000);
    , o. y9 B: K3 f" F+ e& G
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    . Z! w' H2 D+ j9 H5 y7 C
  24.         len = sizeof(struct sockaddr);
    2 y  U$ r3 w5 y7 y
  25.         memset(recvBuf, 0, 100);# ]- S9 U& D. c: D  Y% S
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);5 j4 c( b' B: H. N# [/ _
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    # s# k8 A/ o6 U
  28.         printf("Client data is:%s\n",recvBuf);- v# e/ Q1 x4 k2 B( z) f
  29.         close(sockSrv);
    $ ?$ [0 s6 N9 T- S% h5 e
  30.         return 0;
    2 W* M+ S8 J2 v  _
  31. } 
复制代码

8 t/ D' D* q, c8 ], E* q, L/ f  l6 g' f3 C8 p% C

4 E5 K: b' e( U" V5 z2 ^2 l  u0 R# D) C% n: }
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-20 01:51 , Processed in 0.063610 second(s), 20 queries .

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