cncml手绘网

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

作者: admin    时间: 2020-5-9 02:20
标题: C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:/ I( `+ L* z7 L9 t; P
  1. #include
    ) u! ^  D- J* Y' {
  2. #include
    8 t7 M  b% @4 c% ?/ K" M
  3. #include
    8 y% B1 c5 R# y  P
  4. #include
    / E% ]1 ^" C( e2 I; V3 t( O" J
  5. #include7 J/ }' \9 v0 u7 T" f
  6. #include, }6 r5 a/ n  n: ]; b
  7. #include/ \) o9 @) m% `+ n
  8. #include
复制代码
1 e0 c0 h& L% G( |8 k( A- O
7 L" s3 d4 C+ l, ]
服务器代码如下:9 r% d' F, `( g& C8 S5 U* D
  1. #include
    # h- }) D6 n0 ^
  2. #include  W9 Q* \+ k) v# F( f
  3. #include3 I3 R; E- @5 I7 F" d' d7 X
  4. #include
    / _- M' W. n4 }: U& N- e
  5. #include
    - j3 I) k5 \" [% z1 z
  6. #include
    ; \* ?% c2 S: ^! I8 p2 f7 ]. }
  7. #include
    : ^. D! L" e2 p; I6 Z1 W) H  w
  8. #include
复制代码
7 s3 [) W% b/ A5 w7 Q5 c: I
3 M/ `8 E- x2 t1 x
! {% W- U; ]3 G: W1 i% K
$ f8 I# K) y/ u# T# \5 r% Z
$ T7 f! _2 R0 F# ^3 k: s: X

3 o& \% x+ n  c& E) }& I+ v& I5 v( @1 U% s) Y

; \9 t8 y& B2 [% E4 ~9 J- {
0 [$ {8 `( X$ ]& ^/ j

/ x; x" k- P+ E- n. t- B6 h: Y
- n. \( ?& p/ x1 E& |9 q
5 i+ q6 Y3 k8 `' |( }0 @9 c5 H" I  k

) t0 Y) W  W$ h

% E. ~' y. l" q% ~9 J& A2 i% L, s$ O8 Z  S
  X1 L$ @" Z& C0 R; }" a, l

& ^6 \6 x& X5 d+ [' b; B3 B

( s; ^) {: f3 ]8 q8 V5 f9 g
$ E  T  m0 y/ L. v3 |7 q
' w  d! N, [# `1 a3 c

作者: admin    时间: 2020-5-9 02:30
服务端:
9 T6 M! A/ \9 f/ y: p- x8 m6 R#include <sys/types.h> 2 V5 |' V3 E9 h8 A1 u) l
#include <sys/socket.h> 
5 S) ]( o& ]7 k9 |- s# F4 c& Z; F! Y#include <unistd.h> 
( l% Z: W3 S% ^% o, s$ e6 [* y#include <netinet/in.h>   ^) y: `6 n  t( q0 U
#include <arpa/inet.h> ' n' H( r2 v5 c; T
#include <string.h> ! k# s6 M4 k3 D* ?
#include <stdio.h>  : B) z7 {' L5 a- \
int main() {
  z2 d2 E& f0 z& M" H7 O, C* w        int sockClient;
( c- c- Q9 g( j' B2 n' \        struct sockaddr_in addrSrv;
4 w: l( j+ O& ?  M        sockClient = socket(AF_INET,SOCK_DGRAM,0);
/ |( J  L* m, m, K        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
; i! h& D* D" C- s  H+ D9 p        addrSrv.sin_family=AF_INET;% U9 b) z3 ^1 g# @* i
        addrSrv.sin_port=htons(6000);' }; L8 w' T1 ^& n/ K
        while(1)1 f% w; T/ \3 P- i7 u/ b
        {: C! P5 G6 ^, v! T  H
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));1 X9 W( y3 g, n8 O) f2 o  s1 K
                sleep(2);( V% L3 x) ?. c
        }    
+ g* {7 N6 v. l8 X- e4 N        close(sockClient);  2 f# Q. Q1 V. v( b5 @
        return 0; 1 Z* Z0 u% A1 }1 I$ B1 d! l
}
( @6 k; o! V$ S& \; a
3 @4 _- D3 r' |8 o- |% L$ \$ K' b9 A9 \$ K$ T) a
客户端:
  1. #include <stdio.h> * X  k1 X- g) |' g
  2. #include <sys/types.h> 3 V8 a5 A/ O: Z: N; [  M
  3. #include <sys/socket.h> . U. Y8 B' a! v8 t$ N8 g
  4. #include <netinet/in.h> 
    1 U0 T0 u; c7 Q3 L
  5. #include <arpa/inet.h> 
    - @$ A8 V0 m% x3 ]/ a
  6. #include <string.h> . \+ ?- I. k4 f6 {1 L! }0 `
  7. #include <unistd.h> 
    7 V! Q0 C$ P" ?5 n* ?) p3 J- N
  8. #include <fcntl.h> 2 t0 }: R1 L) `# `
  9. #include <sys/time.h> ! c& H, S. ]5 ^* @+ T
  10. #include <sys/select.h> & ^: K. L& {" Z  b
  11. #include <sys/ioctl.h>  
    # Z/ q. K& G/ V0 k- a
  12. int main() {
    3 O3 \7 I4 C  G/ \" \7 Z" \0 _( [
  13.         int sockSrv;
    9 `. |, H4 Y5 @5 b
  14.         struct sockaddr_in addrSrv;: X( F% m5 P' g/ _9 X
  15.         int len;% J0 m- {) _  S8 h/ r
  16.         char recvBuf[100];
    ( G$ O. e; b! w
  17.         scanf("%s",recvBuf);
    ' ^' {  U6 N- ^! H$ r
  18.         struct sockaddr_in addrClient;
    9 d. q8 ~( I# s" y# Y9 ~8 [+ J; F
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
      M$ c0 ^  \+ ?" |2 U+ q6 P
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);" Z& i) T) r3 |$ q! A$ D6 P
  21.         addrSrv.sin_family = AF_INET;: |2 x9 D$ }, |. j" v; f/ D
  22.         addrSrv.sin_port = htons(6000);  Q5 |9 J6 C2 b  [4 T5 B) D) g7 ?
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));$ O! Q& W, ?2 `: K: m
  24.         len = sizeof(struct sockaddr);" ]) L  a' _9 I3 v$ D
  25.         memset(recvBuf, 0, 100);
    # l" `6 @0 k- N3 i' U
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    4 k7 ]/ Y/ i0 R4 w7 U/ m7 [
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    ( h& Z: V7 k( c1 D" N; [
  28.         printf("Client data is:%s\n",recvBuf);; q# }" T6 G6 P
  29.         close(sockSrv);
    - C1 ^* d. J4 y7 y# ^1 `
  30.         return 0;; H1 T6 u! J3 u8 e
  31. } 
复制代码
/ O1 t8 e% I: l: w" ~

" W) T( y4 H/ i8 r
7 {% X2 Q0 h7 w2 C: R/ K( h# ?; z* k% |! `, O5 V. ~. f





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