cncml手绘网

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

作者: admin    时间: 2020-5-9 02:20
标题: C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
( x# z$ u, z  G  X, e
  1. #include
    , @. C; G9 d+ M! w8 |8 r, `
  2. #include3 ?# v2 r1 H& S! Y
  3. #include
    ' H: d* @" O6 {, @( u7 g
  4. #include! L3 o7 m% p7 `8 a0 t6 q
  5. #include8 L6 L2 C3 D/ Z( s
  6. #include* b: l2 m1 e! `, {0 }7 ]
  7. #include
    : R' ~+ h& {7 ]3 g# I6 {4 u
  8. #include
复制代码

: E1 g9 ~* L* C$ d4 w9 d1 g% ~1 C( c0 ~
服务器代码如下:
' Q% q/ z' O! T+ B+ R
  1. #include6 M2 H, T( Z  j
  2. #include6 T: `0 h6 S* e+ q
  3. #include8 a+ Q# a% J5 x
  4. #include
    7 \7 F1 g1 U- w* t+ z7 \4 F
  5. #include1 ~* ]# e6 f" O4 m
  6. #include
      a9 x, i- t2 h' f
  7. #include
    7 X8 P; f+ m1 {9 a! _
  8. #include
复制代码
  T, ]' x4 R( r

0 U2 q4 ?8 j# \2 Y. {" o) ^9 U3 F0 a7 F* N6 \: x/ d

$ F9 o( x, F+ @/ G0 a* L4 Y
9 \: H4 o/ X/ i( I

" ]( K2 @2 u. }5 M! p+ c& v$ ^' m2 f' o

* P6 I  i- L2 z1 Q4 s
3 u3 G% P. Q- r
8 [2 T; P5 H9 u2 X

" ^) \  t1 Y' x$ f3 D

' u7 ~! W" @7 K7 j8 P3 M; H% ?4 g7 E" B4 {; j: {
; X8 d6 m$ [$ x) _

0 d4 B. L9 v( I& D" I. H

; u/ K" }6 E4 z+ K& o# J
. o% q* o( M& a9 x
/ s. J6 c$ n* C/ d1 ?2 Z

; s: i- I: w" o9 j2 C$ a$ i

6 f6 P+ f8 ?# B
作者: admin    时间: 2020-5-9 02:30
服务端:# z' u0 N. o- K# S
#include <sys/types.h> 
- U* [2 a- [; a5 N1 N3 N9 w) }#include <sys/socket.h> 
  l1 `4 b" O+ w' l3 `/ y#include <unistd.h> $ W. J5 _( F9 i) u0 v4 F) U
#include <netinet/in.h> 
: J0 I) p' N  y4 H#include <arpa/inet.h> 
) s) }/ ^# ~9 K1 d, v#include <string.h> 
; X. g1 L/ z7 P) C/ {& m#include <stdio.h>  6 R. A7 m4 l2 a0 X6 r
int main() {
2 E; o- G+ F- h$ |, ~" ~4 }8 ?        int sockClient;& H/ Q( [5 J  Y; q2 B1 _  ~
        struct sockaddr_in addrSrv;/ r/ M/ P& U7 i; w
        sockClient = socket(AF_INET,SOCK_DGRAM,0);! i  U5 L9 _$ \3 w
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");. B+ T5 r( U; _) d! X) G: }9 y
        addrSrv.sin_family=AF_INET;
) O5 a/ I) w: z) {9 x        addrSrv.sin_port=htons(6000);
. D5 f7 M/ O. j        while(1)
  ?3 r/ y* j4 I, X) Q- V        {4 T! F# z) S! y+ f
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
/ G/ s7 i% I  u! L3 c$ M: V                sleep(2);0 Z6 I" e" h8 {
        }    - s. J2 N6 m3 [/ e
        close(sockClient);  
$ w- m* d' U1 K. x        return 0; 3 {9 o8 F/ c8 \5 A5 I% X: l
}
+ M7 R* a" S- e
' \- {1 [5 M3 N" N) h" J
. p* E5 V, q9 m+ e% f1 F客户端:
  1. #include <stdio.h> ! `3 Z: P. s* q) s( [( l
  2. #include <sys/types.h> * r7 C# K3 J5 v" H# e6 q5 X2 ?
  3. #include <sys/socket.h> 
    / _) H! c. l( U. h0 m% e
  4. #include <netinet/in.h> 4 I. k$ t4 V9 j* U0 o5 V. X, t
  5. #include <arpa/inet.h> + G) y1 F" N( F6 J5 n+ T
  6. #include <string.h> 
    : C9 w7 F( J0 R/ L( i* R0 y
  7. #include <unistd.h> 2 F. ?( m8 I6 N9 M+ E1 j
  8. #include <fcntl.h> 7 _7 ~" `/ ?* H' y
  9. #include <sys/time.h> : r, l4 B$ f' g* v9 w7 U' E& L
  10. #include <sys/select.h> 
    ) H$ J, f& u6 [7 C; p' W7 r
  11. #include <sys/ioctl.h>  9 z5 F+ k/ z- Q2 b
  12. int main() {- [% y) k, \, B* L3 ]& H- U
  13.         int sockSrv;
    1 E5 x' Q1 d8 e( b% }. J
  14.         struct sockaddr_in addrSrv;
    6 V% d7 j2 E( w5 ]1 I2 ^  N
  15.         int len;
    ' r/ v; t8 w% O* \5 H
  16.         char recvBuf[100];
    1 m/ x3 V' g. E, l* o. Z
  17.         scanf("%s",recvBuf);2 Y! A. {- R% |5 H2 m
  18.         struct sockaddr_in addrClient;
    " G+ R( y  j: d( I4 ^, w$ `5 w% s
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);& S* k: z# L6 L* ~! ]) w+ ]7 k
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    , Z( E( B# x5 D& e
  21.         addrSrv.sin_family = AF_INET;
    6 A1 y( l9 e5 s4 u
  22.         addrSrv.sin_port = htons(6000);
    % ~7 l+ [& V, {, f2 ?
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    ' R- b9 y* U7 a8 e+ y
  24.         len = sizeof(struct sockaddr);
    ' P& Q; n3 S! f" Y# k  V
  25.         memset(recvBuf, 0, 100);+ N! _# f3 w, }: {+ `
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);) u% h4 c( ~. X
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));' @" f& ?$ n" n' K" x7 m
  28.         printf("Client data is:%s\n",recvBuf);
    ' J* ]& j8 D" o& P3 `9 K& U0 G
  29.         close(sockSrv);$ u4 `& |9 d. ^1 h
  30.         return 0;/ K' w/ J/ K' I& r; g
  31. } 
复制代码

9 J' C* O! j4 q( K
; L$ |1 `8 y/ u+ R( R
. W8 q9 g$ M. D) v. s4 z
; w0 p* O; `- p) D" J' x" M




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