cncml手绘网

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

作者: admin    时间: 2020-5-9 02:20
标题: C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:2 c6 U3 T2 E, d  d' H
  1. #include; F3 H3 k8 F+ g. G$ ^
  2. #include
    6 ^+ S- _2 k& t% z3 u
  3. #include7 h( {7 ]5 g# S  U
  4. #include( l7 w* I, g% ~% ^- q& B- `
  5. #include$ X0 S! B! _" V+ j% D- Y3 s* p
  6. #include
    0 p- z" k/ s, k+ b- q
  7. #include
    - u8 M9 ^! w" F6 g7 y7 [
  8. #include
复制代码
& i% i% u6 j. a6 I! o* I! J$ r

# m# V3 b. e: V服务器代码如下:7 F1 q4 p( n2 Z* ~7 p. S8 z
  1. #include
    7 j* C6 V; h6 ]" y+ s
  2. #include& p- R* C% o, S& V- H/ J1 A( f
  3. #include
    ( P. l! j* O% L# h; Y9 d
  4. #include2 N! l/ @. ~! V6 ~" e
  5. #include
    4 g# y- \' W& p& K6 b) A
  6. #include
    $ `3 N! N5 m6 U$ F& K
  7. #include
    2 R0 J, k2 g. o1 s- e
  8. #include
复制代码

  I$ X& i/ Q! n$ p* H& e; |& O& I( s$ a: T
1 |9 u; s, q* D! ^+ u

. g7 A: L+ s6 W5 l+ o6 P1 U6 t2 p$ ^1 S+ H+ ?; }8 Z

* Z2 x# F+ k) W' S/ X. @8 c4 A2 j+ ~" T. q% P
# M4 x. m' Q4 [& u/ v

+ @% d6 y# S# y, s0 O7 @" h5 `$ i

8 n" X- {% o& r" [3 w3 U8 {& C5 s5 {  ~, |: ^
8 D; y  C" z$ g: w# p0 p9 m

8 S+ s# d3 H7 o0 V( u  C: J

/ X. q, y& J" f! h/ ^' g' f( ~. p6 d; e, V
- G- c, Q  }+ t/ W# ~0 E9 T/ Q* b

! |  h$ S5 r  V) S: g3 b1 @
, W8 F) V0 c% F
& D- w- s2 B( a$ D4 P

" y2 u+ j* r# C7 f' b  G' {
作者: admin    时间: 2020-5-9 02:30
服务端:5 F- o( B' \5 t
#include <sys/types.h> 5 Y$ C4 f$ `7 V( ^( ~/ x3 z
#include <sys/socket.h> , s' l7 j/ p; g3 ~$ s) B
#include <unistd.h> 
$ x! ?$ n1 p% [* [7 F' l: [; s#include <netinet/in.h> 9 m0 ~4 _* R  i
#include <arpa/inet.h> 
+ w2 Q0 t2 c) @" w# l2 `#include <string.h> 9 C% [9 \% s4 o6 R& H( H3 u
#include <stdio.h>  2 x; D0 o; I6 i
int main() {7 n3 A: a( @( f' Z+ V3 H" O) B# r
        int sockClient;
( n/ M1 @: k+ e. V9 ?        struct sockaddr_in addrSrv;9 @! o4 ~" ~/ o
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
$ c7 W; ?. U$ a6 S2 i        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");8 m; J1 B4 z6 W: U" M! V# a
        addrSrv.sin_family=AF_INET;
  n- z; E- Z% _" \+ L) ^        addrSrv.sin_port=htons(6000);  ]" `6 i3 d2 e% K7 O; f
        while(1)
/ c* j/ S( I5 {8 S- t        {" Q) J; f8 R1 ~9 o6 |
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
: a2 S$ \8 P3 Q% r+ O# H                sleep(2);+ l; {; w( D1 z$ g5 v1 O" Y5 p
        }    
) @8 U" v7 Z7 }        close(sockClient);  9 ?5 {' O3 B5 z+ d% b
        return 0; # _, S, N4 x0 D
}) s$ i. p( F$ h# N. ~% I
  r$ o- x' |* h. G8 s* {
) s4 R' R7 C+ Q+ @. v; d0 G
客户端:
  1. #include <stdio.h> 
    # D% C1 Y2 B0 J) f' g
  2. #include <sys/types.h> 
    & c- b% `  K9 ]  t7 W
  3. #include <sys/socket.h> 
    ) Q/ }6 j6 g0 G3 f6 P+ `
  4. #include <netinet/in.h> ' [( D! a% N# [. @
  5. #include <arpa/inet.h> 
      u3 T; U/ J+ `1 E. x9 m: j; _6 r
  6. #include <string.h> 
    % Q7 B" @: i) B7 R/ ?; u
  7. #include <unistd.h> 
    2 U/ R! C5 i1 d; N! N
  8. #include <fcntl.h> 9 `& ?* b: F3 n- @" ~% d  G
  9. #include <sys/time.h> ' l9 p2 R& G& @; n
  10. #include <sys/select.h> 3 R+ q9 ?4 f1 L
  11. #include <sys/ioctl.h>  
    ( L3 W+ u, l; R3 L7 n) C) s
  12. int main() {
    5 `4 W) m' m7 \. s. f- Z
  13.         int sockSrv;
    ( m4 W' r1 [" ^( F+ P
  14.         struct sockaddr_in addrSrv;
    . Y$ l/ q: W6 k( O" T8 I
  15.         int len;
    3 o# y+ S: K/ [7 W1 w9 A) C( f
  16.         char recvBuf[100];
    ! P+ ]; D7 Q8 j8 `  C& c9 a) h) \( o
  17.         scanf("%s",recvBuf);9 L  i  j8 N2 L; F- Z
  18.         struct sockaddr_in addrClient;
    & A, X3 u6 \9 d7 K- s0 T
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);: i7 j+ Y) @1 `8 _" Y* h; t( ?
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);  [6 _  c6 [. c. ]
  21.         addrSrv.sin_family = AF_INET;( m  X8 N- ^  |- ]0 y; ^
  22.         addrSrv.sin_port = htons(6000);
    ; L( @9 r2 x- z: `" c
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    + N% J6 f/ I( r# Z  m
  24.         len = sizeof(struct sockaddr);
    & U9 _( \( [+ Q* V. o
  25.         memset(recvBuf, 0, 100);2 {& S# i/ ]! W; d/ x! h$ z5 n) k
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    , X( l7 ~6 t% f+ W) m1 F
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));/ ]( s5 G! N0 s4 T
  28.         printf("Client data is:%s\n",recvBuf);
    $ T* f/ ~4 K4 B
  29.         close(sockSrv);
    9 v8 U* D5 G; r7 e, \- g
  30.         return 0;+ W; [, E- }& D' R* t, Z' }
  31. } 
复制代码

7 j6 Z* G) \- L- J. u1 @/ ?7 a
. y+ H6 H2 C) q, V' P
% B! ?) z6 S# D, @
( c- x0 K- n: n" _  a




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