cncml手绘网

标题: C语言学习之Linux下TCP服务器与客户端的实现 [打印本页]

作者: admin    时间: 2020-5-9 02:20
标题: C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:  u& D9 K/ f2 S% B
  1. #include2 P9 }1 \" [: Z% g: z, I5 Z! u/ `
  2. #include) }. p7 ^5 G4 A/ n
  3. #include
    , t$ s3 I: _8 c& A& e+ d" i# G% n
  4. #include
    : G6 M2 j" v( x# x* V) Q' d0 x
  5. #include5 Y7 ~, h) d$ Z# u
  6. #include8 e* v/ z) `! D6 w1 q3 \8 \
  7. #include; {4 W* G5 v$ _' D1 O
  8. #include
复制代码
+ ^5 `. B- J( o' s2 i
3 e, \: K/ v* T3 N3 q
服务器代码如下:
: v9 H9 [9 }4 {& B4 e
  1. #include6 K! C2 H% G* `0 t( w" m
  2. #include
      J9 t) x/ i. p7 }
  3. #include1 i. q! u2 m: j; w  r
  4. #include
    ) Y) Z; d/ m- F3 M7 W" |7 W
  5. #include$ y& F8 B: B. k4 b( ~& ^' b( Q/ z
  6. #include
    + [' @0 u- K. e$ W; k5 K  g
  7. #include
    " G& G, _& m7 S: b8 f* \1 b9 p$ j' Q
  8. #include
复制代码

5 |! L' h. H; B; F2 |
4 e2 r0 p0 ~7 C' o. C! C
9 f+ X$ S' U2 w

3 o. {- t" T3 ^+ c2 x! B
5 G! l& N" E- W- j" s; x4 p

$ q6 P5 Z3 S8 }) e' e9 e
# @5 _! M" @# Q4 w
- t4 |5 U, \$ Q% M4 J
( _5 c0 d8 i& ~3 ^$ S* j5 P3 }* M
, }. P' O. x' a8 }1 `
9 z, A9 b* O6 n4 [

6 @& j$ r8 j. V6 B( a* h  u# q% m3 U( n9 Y% @9 o
8 X+ Z2 M/ h& G

* ]. u# R9 N8 ~9 S' e# c5 M
- r5 j# D$ x* z1 y* x  g& `
( l3 \9 L) q% C0 J$ V

; K; R, f6 K. q( ]2 W
2 t' L0 v, A8 u, y% q  ~
& T" Z4 G* }$ p: |

作者: admin    时间: 2020-5-9 02:30
服务端:
6 i7 Q' t6 x! t3 {$ _4 |3 x! Y#include <sys/types.h> 
2 ~/ `# v# q8 p& M/ h#include <sys/socket.h> 
! N# M0 a; J4 G: M#include <unistd.h> 
# ~  z3 \0 }1 D% g#include <netinet/in.h> * {4 b8 J% k& |
#include <arpa/inet.h> ! D1 M2 q2 ]3 E9 D( H
#include <string.h> 
# V2 J0 Z; G1 E8 B$ D#include <stdio.h>  
# ]9 L0 K* j/ _' K& Q5 sint main() {
' _3 {8 T- z* b+ d        int sockClient;
, A3 \& U; A: i) n! I# V        struct sockaddr_in addrSrv;- R) }' w: [% R. y" A3 S4 a
        sockClient = socket(AF_INET,SOCK_DGRAM,0);2 g; k3 \# H: i% j0 u1 ]3 }
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");# a) J* Y4 K2 k3 `/ q; h
        addrSrv.sin_family=AF_INET;
6 K: _& ?: O2 l* p! x" F        addrSrv.sin_port=htons(6000);  P- P3 ]* w+ P- W; I% i+ R
        while(1)# S$ p' F! [$ m0 V. d
        {
* s" t# T. V4 u& X/ {  C                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
( ]/ k: V  v9 f* w                sleep(2);$ u; ?$ S7 g5 ~% \! z) b
        }    
4 D# `8 k, B( _/ g9 y% y7 X        close(sockClient);  2 z7 ?/ h5 F# R
        return 0;   F$ O# a. \8 ~( }+ m7 f9 O
}
5 U$ U' `0 f& f$ v6 q/ u" g. [2 N# p5 v9 f* o- ~
! {- H/ X& |4 L  i
客户端:
  1. #include <stdio.h> & N1 }1 N4 r: [: a5 s
  2. #include <sys/types.h> 
    2 t% q0 ^* a. ^8 d9 @, Q) `
  3. #include <sys/socket.h> : @3 y+ C# E8 Q: X# Q
  4. #include <netinet/in.h> 
    ; I6 [2 ^& [' }0 w; z
  5. #include <arpa/inet.h> 9 Q0 T& b$ {) K( U4 i6 Z3 e
  6. #include <string.h> 
    9 }) B* u/ p# J5 E" y, |9 o5 v
  7. #include <unistd.h> 
    2 B  A% m' @2 n, S' c
  8. #include <fcntl.h> 
    - D* a' E/ P9 b
  9. #include <sys/time.h> * R! `7 P9 q4 g/ L; }
  10. #include <sys/select.h> 
    # g- f0 }5 c) Z4 m/ n
  11. #include <sys/ioctl.h>  
    " T6 N8 q: s: l/ Z! @9 d' I
  12. int main() {
    5 f8 k7 B0 j# K0 B1 n9 L  X) M
  13.         int sockSrv;, M( Z5 {& t& s3 h3 N  O
  14.         struct sockaddr_in addrSrv;
    8 A2 l- U$ Q7 p& b% _
  15.         int len;# l1 {3 f3 U1 h' o
  16.         char recvBuf[100];* I5 D3 ]3 T3 x" N* H1 A& N
  17.         scanf("%s",recvBuf);
    ) C) C% F( K6 h, ^
  18.         struct sockaddr_in addrClient;
    3 ]; ?  ^, g4 ], e8 M1 u1 Z& t2 i& _
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);8 _  N: P5 N& `% I
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    0 T3 `0 V2 k5 {. ?
  21.         addrSrv.sin_family = AF_INET;5 w) S3 d4 s- S" M) o
  22.         addrSrv.sin_port = htons(6000);( S. N0 j* a0 }% I7 L6 P4 \
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    - I) m$ c) e/ Q% E1 ^
  24.         len = sizeof(struct sockaddr);
    / A% J3 w* {' {- Y  ]8 c$ w
  25.         memset(recvBuf, 0, 100);
      g3 k# J9 ?4 c4 S4 E
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);4 [2 u8 P# }9 T: L: n
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    % ?, D5 v" `& @
  28.         printf("Client data is:%s\n",recvBuf);
    . ~- P/ ?  E' e9 m
  29.         close(sockSrv);) C& ]/ }; _8 h/ E
  30.         return 0;
    : R1 i# ^/ [4 A
  31. } 
复制代码
  S. _( I! j! ?4 k1 _6 [+ a: {

9 Y! w: c' p" C) E
4 s* }+ c9 `" |! T' Y( @
, g9 d  c6 A9 B- {5 r; H  `




欢迎光临 cncml手绘网 (http://bbs.cncml.com/) Powered by Discuz! X3.2