cncml手绘网

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

作者: admin    时间: 2020-5-9 02:20
标题: C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:7 ^1 a( o" [/ P
  1. #include: j! W, y, x# [) I4 P" }
  2. #include
    + R3 a& m" g, F/ j* F3 u+ X( j$ Y
  3. #include, E( [) t4 `$ J( |/ v* Q/ a: u" l
  4. #include; e. D; h: s9 `: n% b0 h
  5. #include7 T- o& [0 r2 Y2 }. ]
  6. #include
    ; A: [* G# J' L& a. Q& X5 ?
  7. #include
    8 d( i" @6 ^/ X1 C) R5 l! ], ^% t
  8. #include
复制代码
+ z+ `; }( o1 S2 b( ^( @

2 P0 z" D4 `  T- s  U, y. r7 u" |服务器代码如下:8 u8 ]4 v" o. ?! T* J  n! d
  1. #include3 K/ R3 c- x6 f
  2. #include
    " d" X0 u: ?5 }8 }1 f2 z3 r5 s7 V( Y
  3. #include! A) [1 n/ f4 c9 i, k- g% H
  4. #include& R  u8 B+ D# t3 ?
  5. #include, s% {$ T" E3 |8 N4 d$ U
  6. #include$ d  P* X) i) p$ X* V& d
  7. #include# \1 L4 T& |* g# G
  8. #include
复制代码

2 J5 Y& C/ L0 |& @4 f6 T
. w% s! c# j' t5 v7 P# k' Z' y# e! a6 c) ^

5 a. a8 `' U1 Y) S8 i4 S
* w% f5 J. E* U( k5 |- j

# L- q$ K- _1 z! ~2 Y
; A# h9 g  ^# C5 U( s. @. l# z' o
& W( r( M- j' b$ v
7 N) s. ]" y( ^1 r
3 |0 g8 n6 Z; c) u: R

' e$ E5 D2 X  Q; E5 w
9 z7 d3 `1 J$ Y& W/ i8 \

. n  e. J# b' u3 ^, q' X9 d% b

  ~5 M' X: c2 }+ g: k
6 K" F/ w  m" p0 M6 ~- ^! x# {
7 h( t6 I  {: b1 {; u9 W
3 `* {. X" Z) @  b( @6 {1 R

9 `; [9 C1 G! ^/ H. Z, ]4 S7 R' @0 Z3 X" p. g' W+ k

, B& O  J& m" ], M. X
作者: admin    时间: 2020-5-9 02:30
服务端:" R0 |7 q0 j; y. C% `' @
#include <sys/types.h> 2 O  w, G( W" E( @8 ~
#include <sys/socket.h> 6 h+ U! P1 c- c+ K% A; {
#include <unistd.h> 
) J) Y: \& X; e' V  ~' \0 Y#include <netinet/in.h> 
0 S8 J! b& Q8 R/ Z7 P5 m& L#include <arpa/inet.h> 
5 v1 H% w6 g- C5 v; Y4 n#include <string.h> 1 m3 a. c5 x2 B+ {, E3 N* S4 x) y
#include <stdio.h>  ( n, K# E0 C8 F% y' ~5 j+ `( m
int main() {
# y, W2 k% q* A# `) W  t0 l9 P5 X/ C        int sockClient;& y% \( s$ G. q4 a4 o
        struct sockaddr_in addrSrv;/ ?' [' r( l% M
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
# m9 S; S& ^3 {4 _% o        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");5 Z4 S( D$ _: l; L( Z8 g
        addrSrv.sin_family=AF_INET;
, @, k; A4 f. k4 K! Y$ ^0 P        addrSrv.sin_port=htons(6000);( U  J  J6 b- E  @
        while(1)
- x# D. U0 F  X: ^8 F; V: b        {! J  O5 ^5 m' i% ]
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
. m' F0 m( l5 A1 W                sleep(2);
8 @2 b7 p- k3 R( U        }    ! f4 @6 b8 m) O8 ^9 h$ R3 u
        close(sockClient);  
2 O- J) ?/ O, X# c        return 0; 0 W! a! ~. N! P& K( x
}6 }! b! O3 {. m7 U3 S! j

9 M: \5 C2 Y1 v+ T1 B3 M; W
6 `' w& i( H, K  {' l! \2 K客户端:
  1. #include <stdio.h> 
    , j7 i& b* F5 @+ L4 A
  2. #include <sys/types.h> 0 ~% D/ `/ G. o* p" I9 K
  3. #include <sys/socket.h> 
    ! e/ e1 [9 t* s: k, d3 C
  4. #include <netinet/in.h> % l9 Q& r! f. h0 h5 o
  5. #include <arpa/inet.h> - |5 y' O! z# H
  6. #include <string.h> 
    ' b7 _3 o0 \* Y* ]: p! J
  7. #include <unistd.h> & W) n, X0 i4 }# S1 b
  8. #include <fcntl.h> 
    : d6 \4 P, G4 E+ e5 e- P% ]" U
  9. #include <sys/time.h> 
    . B* Z. X7 n% r+ n" f7 D1 J
  10. #include <sys/select.h> 
    6 Z& \, b% k# @5 _
  11. #include <sys/ioctl.h>  
    * V+ N7 J1 s( V) y, O
  12. int main() {2 U. \3 G  Q- Q9 R8 T2 L7 |7 u
  13.         int sockSrv;. x5 D, Y5 [4 h1 x  p# E
  14.         struct sockaddr_in addrSrv;$ a9 x9 y& z& N
  15.         int len;
    1 X) [# Z7 \- u) s/ |2 M& ~
  16.         char recvBuf[100];6 b3 z8 [5 _, n% }) h2 e
  17.         scanf("%s",recvBuf);
    $ G, R/ t) n4 s
  18.         struct sockaddr_in addrClient;3 ]+ W4 u; P) [9 @& Q
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ( P! e$ u2 f) F5 b+ Y& e: k" W1 D
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);3 y1 ?0 ^" k* t9 b6 K& ?
  21.         addrSrv.sin_family = AF_INET;2 y$ u3 b- H& G. L& U3 r9 Z/ g
  22.         addrSrv.sin_port = htons(6000);
    ; W2 d. o7 I5 b6 j4 @' u, \
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    ! Q9 T: ?, w* n7 q, K" V# G
  24.         len = sizeof(struct sockaddr);
    ) v+ f  R; i2 c) F3 ^
  25.         memset(recvBuf, 0, 100);; V  U7 Y7 q! f9 j' c- C
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    ( j: F  f5 g3 S- y  ^5 w* q$ i
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    ; t7 O8 s3 p' q8 k  V
  28.         printf("Client data is:%s\n",recvBuf);/ _, r1 U! N- h
  29.         close(sockSrv);7 U* F; ~) j! E4 b2 \1 c3 S
  30.         return 0;' T& S" _8 w. y0 z
  31. } 
复制代码
6 f+ Y( V& z0 I
! _& P: x, k7 u/ F" d4 u3 T
3 R+ F$ Z% m& y' O

( {0 ^8 }( U0 b" C7 P! A# c




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