cncml手绘网

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

作者: admin    时间: 2020-5-9 02:20
标题: C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
, a3 R) F2 `6 Z3 V$ ^$ Q$ s
  1. #include
    7 z( t* D9 b) K1 _. i
  2. #include1 t9 Y) S2 P. o+ I1 K
  3. #include  \4 _1 t- e. W7 `& T
  4. #include9 ~" B" N2 U* U
  5. #include
    & j- s& a, g  U
  6. #include" U4 d+ C, [! J/ v: D
  7. #include1 g. q. `: c; M$ q9 U  R/ ^9 W
  8. #include
复制代码

; N0 d5 a, Z* y( G
. l! T( z' V1 T. i服务器代码如下:
  T/ L# x5 M6 i8 t7 K
  1. #include
    6 N+ Y; L0 ~' [0 l
  2. #include
    & ~6 q4 E' f, U( t3 a/ _
  3. #include
    - F. R1 s1 Q+ ?$ v% I# W/ e+ x( N+ ~4 n
  4. #include# n4 C8 V6 q6 g* j5 j5 T
  5. #include5 K1 o$ \! I+ K8 N" G
  6. #include
    # F# @8 l4 D8 ^
  7. #include
    9 }/ A7 _4 P0 K' O9 o- B5 x, X$ {
  8. #include
复制代码

- {9 ]% a8 M% q7 G0 j6 u/ [3 v# }* ?# F, O- m% I

  [0 @' A4 E, T# F) H4 S$ _
) }2 x6 I8 b( X. S7 U, M' W

9 ~9 q' ?4 Z3 ~3 K
/ \+ h. R/ S* `* y: I7 ~
& M9 P2 `* d1 w
  N% v( i( u1 k7 q; d* @
# V0 r9 u, a( Z, U
! }( w4 J2 u$ _* k6 m9 Y) Q
+ K# M7 Q: ?$ e
3 u' R: E, X" L; N: `, J
+ Y- Z$ E9 R5 K. z1 E0 T1 a

* H5 v4 ^- b  R2 i; a
1 D! K+ ?+ u# r& R+ t  Q& Y. F! U8 N
  b5 g( b% g4 g" T) l4 M% i
% j5 K2 r( A9 e! m# T2 F

/ i7 n* U! v5 b8 L' G" e9 b8 G4 r1 z& R/ q# Z3 t7 t1 n  V
+ n0 E& {1 ~+ k4 ^

作者: admin    时间: 2020-5-9 02:30
服务端:! W5 k+ [. f) t( }
#include <sys/types.h> 
3 U  T4 M& [; ~* ?) I#include <sys/socket.h> " X% ?9 n3 i+ k2 K4 \3 C. n
#include <unistd.h> 7 ]) [: F, @7 a
#include <netinet/in.h> 
$ S; s" M7 R4 T5 G8 z, f* E#include <arpa/inet.h> * R6 G2 @4 L- C# F+ e
#include <string.h> / i/ ~, p8 f. m( N$ j, ^* P
#include <stdio.h>  0 t/ d2 L+ c1 v  ]- \3 S
int main() {" q, P9 i# r! s  g7 A
        int sockClient;  [  X+ y9 `3 k
        struct sockaddr_in addrSrv;  J9 y0 Y  ^5 V. |  Q- F
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
' t! K6 O' D. O7 x        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
! _/ i- O8 k# b3 c! r+ c3 t" F        addrSrv.sin_family=AF_INET;
3 x) x. ~9 @1 r2 v3 w) M        addrSrv.sin_port=htons(6000);0 T( Z- z1 p2 u2 R8 U: F
        while(1)- ]' r( J1 k3 `2 f9 q; c
        {% v4 U* n! t" L, A
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
3 n0 d; d% s# O+ c+ |3 ?: `* `& X/ K                sleep(2);
& K, Q- g+ s: d0 m4 z0 t        }    % ~, o1 Q4 J7 @% ?% F& T
        close(sockClient);  ; i7 v. w! M# H2 ?& r
        return 0; ( U3 W7 c* g% a" e; t
}0 k! e  F- O+ n2 k! e+ d

0 ], N# y( w/ n) ~, k
+ @: y5 ^7 x9 v4 g8 C9 c5 o( q客户端:
  1. #include <stdio.h> 
    3 |+ ^. s  a) H, O1 H
  2. #include <sys/types.h> 
    % w5 C5 N6 i% O
  3. #include <sys/socket.h> 0 U; i1 u- ~4 d  r, @; z
  4. #include <netinet/in.h> 
    1 t  y) ^* P2 a: j8 L5 s; j$ o
  5. #include <arpa/inet.h> % N5 a' S5 V" R+ K& K; t4 u$ n
  6. #include <string.h> 5 E+ v4 x% [% d
  7. #include <unistd.h> 0 }/ S, ~: Y: p: y  r
  8. #include <fcntl.h> 
    + t( w, `9 w9 R
  9. #include <sys/time.h> 1 B/ b9 \0 x( Z: W6 K3 v
  10. #include <sys/select.h> 
    ; T6 ~3 ?+ I) _  ]7 h
  11. #include <sys/ioctl.h>  # O2 m4 Q1 ~, N
  12. int main() {
    ( b4 [% p6 e8 m3 I5 t) b
  13.         int sockSrv;
    3 m9 m3 Z' H8 J5 [; }1 }' U2 z5 b
  14.         struct sockaddr_in addrSrv;
    5 E2 N; T  O) r, W) C1 r, X+ O
  15.         int len;
    9 [( g1 X' }! r# n, V
  16.         char recvBuf[100];" v& K1 l9 n- A3 n
  17.         scanf("%s",recvBuf);' p0 j: ~4 @0 P3 B& C- L8 Z6 F
  18.         struct sockaddr_in addrClient;0 T8 g( P! [+ u2 _% _) o' C* P
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);* e: b* T; ^3 i1 U( @
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
      v+ V' _- u8 \9 Y& ~
  21.         addrSrv.sin_family = AF_INET;7 x3 Z- Y( i4 Y0 ^0 @' V
  22.         addrSrv.sin_port = htons(6000);
    ( Y0 _" h$ u1 M1 @2 w4 a: G4 R
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));& ^" `( X% M" _( ]1 ?9 X; y; c5 _
  24.         len = sizeof(struct sockaddr);
    / o) m% D' `. I3 c  x' k& _
  25.         memset(recvBuf, 0, 100);
    ' g. `/ j6 X2 u/ h
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    % _3 j' N# f- L3 D0 W! Y
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));- D8 I% a* A2 B3 |
  28.         printf("Client data is:%s\n",recvBuf);
    0 ^4 |/ y$ W( _4 p8 m' C
  29.         close(sockSrv);- S; g9 j$ {7 ~* W
  30.         return 0;/ L) v4 Z  ^8 j/ W* M- Z# _
  31. } 
复制代码

# v, T& P. v" K! r: M* w" ?, ]0 s& S/ C) H

8 j$ i- [9 J1 e- a- W( J2 \' [) c$ `, {. Q/ f4 ~9 D6 V' Z





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