cncml手绘网

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

作者: admin    时间: 2020-5-9 02:20
标题: C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:* N. ^7 r: J5 l6 c  c1 Q, p
  1. #include
    # V) v4 M+ Y, V8 v" C- Y0 K; U# W# I
  2. #include* l- w+ E2 o3 L' v9 t
  3. #include
    ) n  a! g" _/ V) q6 z
  4. #include- Y5 o: [" c+ l  r5 I$ D
  5. #include
    2 Y# _. f  a" a7 b1 a- J$ e: o
  6. #include
    3 @* E4 K4 a6 k1 d% h  ?7 y; W, o5 C
  7. #include
    9 @; r: g" Y* Y9 W7 \3 O
  8. #include
复制代码

% \  m3 U* ]( J. k1 D, K: }
3 |% }. e7 p( K" ]8 E3 X服务器代码如下:% P1 v' V$ ~  B
  1. #include
    6 L) P* C3 D3 D3 k4 I
  2. #include
    8 P6 d, |$ C8 Z, Z8 h
  3. #include- X4 _' w( J# m$ @* c
  4. #include
      ]# e, z8 y: e9 k
  5. #include
    - [! N' g' E# v" P( ]
  6. #include* G7 W. s. o0 w2 W% C: V
  7. #include
    8 a1 [, u: }( L- }$ D
  8. #include
复制代码
# Q0 X, Z; z+ Q0 d/ o. N/ B

7 [- A% J' {! K9 _( M' x' @  j! |
" L; f, p: \8 Y6 s, h
! a8 P, t( T0 d6 w3 O* d2 Z; `

3 B& Q; U4 d& M9 g9 O

% x* m7 L6 @3 E) K; N, {" F7 J) @4 U: c9 [4 Z/ i
, X5 C; j, A9 t/ x9 b/ y, `
: F9 l, S6 j( i8 t6 R

3 }) ^0 G2 B' X9 m1 y# ?7 a' j8 Z6 A* G2 @! ]: r8 k

( H2 P6 v% J8 _6 ?- o5 T0 X: `# M0 W% y3 [$ B

5 d- G* H  m' e" K
' L" u5 ?& Z6 m9 [* d3 V
! i" j) ~" g& U+ [/ `& Y

' R, r) o5 d/ I6 h

9 C' L- o/ P& P1 W, T5 k9 i8 J8 ]2 g1 j/ e

5 [7 v. T* `% X4 H* g" K, F
作者: admin    时间: 2020-5-9 02:30
服务端:
% c+ p( a2 I1 b  Q#include <sys/types.h> 
  A/ m6 J4 w$ [#include <sys/socket.h> 
, b! S# i. X7 |5 {7 r#include <unistd.h> 
& ^; j; c. p3 O# `#include <netinet/in.h> , q3 M2 z0 a9 m4 v: c8 v7 S3 N0 _
#include <arpa/inet.h> + ~8 z" m- a' e/ [% x' c# v" t6 s
#include <string.h> , V5 ?- G' f& G
#include <stdio.h>  
6 h+ c, z. s! {! k9 g9 h! ]int main() {
% h' {* R0 h0 G5 z8 e& g, [        int sockClient;
6 R" [/ y" V1 ?; w- B2 ~        struct sockaddr_in addrSrv;
: b( U( k* e/ m        sockClient = socket(AF_INET,SOCK_DGRAM,0);% {9 ^% F/ A& _: t0 ~& x2 I: y
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
1 {3 X6 |" B! f; o$ K2 n        addrSrv.sin_family=AF_INET;
' P3 M; B# }3 k; _: c" g+ |        addrSrv.sin_port=htons(6000);% u& n4 ?8 L* k
        while(1)$ S  \" v9 p0 T. I( E3 p
        {* c/ I' S2 Q' d( E* s0 z8 N
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));% O0 H3 v6 ^( W6 A) }: Q2 k# t5 [
                sleep(2);
$ p6 Q5 j+ f" N        }    
- @) y& r0 M, y4 N        close(sockClient);  
) ^4 Z. B) P9 \% D. q. E8 M' G, T- p        return 0; ( r* ~+ ^4 W( |  @1 H- O+ t
}4 O: c  W( A/ j3 j
; p. S5 v2 G8 x, o+ ]

3 d4 m8 n$ O- R: l) @1 u客户端:
  1. #include <stdio.h> " }8 S: `- F- q* a, `6 a4 w
  2. #include <sys/types.h> , f/ P: p9 [% J- M' o* x) i
  3. #include <sys/socket.h> $ {/ _' d- [  G2 Y
  4. #include <netinet/in.h> 0 K. N+ Y& \8 G/ |# q
  5. #include <arpa/inet.h> 
    & }( R3 T! a! w
  6. #include <string.h> % V$ {4 _1 y1 x! w; m$ b2 j: e
  7. #include <unistd.h> 
    8 v# @6 s+ @+ M" \* f8 Q
  8. #include <fcntl.h> 
    : U2 ]) Q% n: ~- s0 }0 M9 v
  9. #include <sys/time.h> 
    " p5 K" D8 A4 {$ `# ]' X, F" ]
  10. #include <sys/select.h> ! ?& V" J" z" g3 d# t* s
  11. #include <sys/ioctl.h>  * s" ]0 w/ ?/ d1 Q2 e
  12. int main() {, N4 F( Z" ~( z7 ?: m
  13.         int sockSrv;% ^4 S  E* x. }7 i
  14.         struct sockaddr_in addrSrv;* I' H5 h- W+ f, V1 K1 Y: G* V6 }# f! i
  15.         int len;
    8 l  F5 J1 w3 N3 ?6 {' s
  16.         char recvBuf[100];
    + I/ H& V. S8 o' r* O& j- H
  17.         scanf("%s",recvBuf);* F2 g5 t! j7 I" R
  18.         struct sockaddr_in addrClient;
    ) v/ |7 Y' n) v8 `- f
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    " D$ [5 s5 W: ~( ]1 _* V
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    % N% }* D9 K6 s  _* f
  21.         addrSrv.sin_family = AF_INET;
    0 e9 B: f9 ]" |
  22.         addrSrv.sin_port = htons(6000);
    " M0 U: f  d. I
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    2 S" R/ X/ g+ n- U3 ]0 }4 p" ?
  24.         len = sizeof(struct sockaddr);, t3 Q& `* P- P4 c! u! W0 a$ A
  25.         memset(recvBuf, 0, 100);
    " f7 a# N& R0 K  W+ {
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);6 r  k7 ]5 `. w$ e; W+ w0 ~4 i9 s
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));! s8 M' @5 v6 Q  ?3 _
  28.         printf("Client data is:%s\n",recvBuf);  e7 \% ~6 L& b0 ?; F& Q
  29.         close(sockSrv);$ N4 q( b0 P3 y  Q- i
  30.         return 0;) B+ o/ `$ ?, t" {
  31. } 
复制代码
5 q! ^9 w  K1 x2 _2 f" N
: H  s! M3 b( [) T# T4 o, d

1 i2 [* o) N! S+ B* L& {5 T& v  H7 V% A$ d( @0 v





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