cncml手绘网

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

作者: admin    时间: 2020-5-9 02:20
标题: C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:& E; j2 t2 @. n2 w# Y6 r
  1. #include0 p! X5 P, s- s- l- t9 R
  2. #include: j5 P% ?  X4 b& M( E
  3. #include
    1 X3 o* y3 c9 }1 J; p& h5 A* f
  4. #include
    # u8 V# `2 M2 @2 A5 O
  5. #include
    ' ?4 B7 v$ o0 s: g! I4 ^/ N
  6. #include
    ; c% B4 ^0 J& @. X$ {' B% q2 [
  7. #include. m+ K, U! i( c8 q- \: H9 f: ?3 B
  8. #include
复制代码

/ M1 y# N# m( P5 D8 t* ^9 K+ B) Q# h& v3 e+ d
服务器代码如下:7 s# m  `6 A9 ?6 v
  1. #include: m# Y4 d- W: H" g5 G* _- S
  2. #include# I  E8 Y( ^6 ?$ u3 v# S
  3. #include9 x' T8 F5 f/ [7 t( F6 L8 A
  4. #include' c6 X- H, E; `
  5. #include9 G* V" U. L2 P7 C9 ^; x9 Z( A: O
  6. #include
    : p; P- i; u  Z  n2 ]$ ~; d( b
  7. #include% a$ U0 Q# Q9 _9 n* u9 _7 O# y
  8. #include
复制代码
% ~5 F! X& d5 P5 ^. s
4 F. g/ ]# u. |: t9 f

: Z- e$ ?) ~) ?0 G5 S# y$ x3 T
; `: q5 {! d+ i6 \$ H9 y" c% w
! A1 t1 h6 k9 w% B) z2 t

. G( d- p, ?' o
1 w: Q0 Q; e) ]
0 x/ K# W0 g7 t7 l4 a8 Z0 S/ [

. e& y2 a/ N* e$ w5 p. a
: W! U! |5 U! B0 N6 N

2 S2 d2 j& e( W. @
* X6 b2 g! s8 P" B; Y6 |) `9 {

4 |* A/ M* g+ S; E

0 K2 M$ Y7 ?% l* \( k
/ W7 C' g- ?1 O

' U( H5 A% c3 T* M# E
" v7 F, }9 C. L' ], e1 U6 k

2 }  |9 n* t0 ~& k2 R/ C3 O- M" f# v4 e! Y& Q" K* Y

9 {1 W; G8 i: Z& A# k3 R
作者: admin    时间: 2020-5-9 02:30
服务端:; Q# z2 g4 S: B) R
#include <sys/types.h> + h; ~& C  V  ]) }' G
#include <sys/socket.h> 1 Q, n' G6 v& d& X+ o
#include <unistd.h> 
# Y9 y: [4 o' m6 K$ e3 g#include <netinet/in.h>   E, d5 Z7 n4 K/ i- w# n
#include <arpa/inet.h> ! @" P( t7 F) W! |! ?$ M
#include <string.h> 
6 e. W7 D8 y7 Y, B- q#include <stdio.h>  6 i% t* A$ s5 T2 w
int main() {, B# z  t6 O/ L. O! l& J) y
        int sockClient;% H! A- T6 e! s+ y$ j: l
        struct sockaddr_in addrSrv;7 k6 p+ H, ^" T
        sockClient = socket(AF_INET,SOCK_DGRAM,0);" E( b7 U4 \. i4 u1 D. j7 O$ _* z* T6 g
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");- a% F/ B. _% h, q! [
        addrSrv.sin_family=AF_INET;" S) N* M5 O/ E) W' Y0 O* d/ z* W8 _
        addrSrv.sin_port=htons(6000);
8 x# m! `- D8 F        while(1)
5 _# j2 `) `3 b9 Z1 d. I        {
  a3 Q$ b; \* [+ D! z4 {9 K/ K                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));) Z' P! z" R- g1 b) o5 I4 S
                sleep(2);
& w0 T3 c3 X+ {, ^. ~( j+ V        }    
3 j. ~9 c. u$ b$ C& K; W        close(sockClient);  7 p7 i( z# d7 g. s, J9 m
        return 0; & s9 |# x9 w' `3 j: }3 G
}  n+ @/ q0 L( }: u+ W$ q
* Y( C; P3 r+ I5 a" o
0 M, B; ~; v+ K5 {) E' c
客户端:
  1. #include <stdio.h> 
    ( F* W9 U# w" h- l8 S
  2. #include <sys/types.h> ; p4 b. \  h4 Z
  3. #include <sys/socket.h> 
    4 Q* M% D& ]0 s
  4. #include <netinet/in.h> 
    . h% O0 ~- U2 u0 S: f& ~
  5. #include <arpa/inet.h> 9 X0 p& W) |. Q  @7 G
  6. #include <string.h> 
    ! e5 N8 n; }4 j0 t
  7. #include <unistd.h> 
    ! [0 J& H) [% l+ G( b
  8. #include <fcntl.h> 
    / A$ h" u+ @* b/ f' g0 V+ ?
  9. #include <sys/time.h> 4 J& n# e- H. I- P* [
  10. #include <sys/select.h> 
    ) G- Z* w9 W3 D- N
  11. #include <sys/ioctl.h>  
    ; S' k) O" p8 R2 e2 n" t# H. l
  12. int main() {4 g8 ]0 N" ~3 l5 }1 s( Z8 V
  13.         int sockSrv;
    , b7 C# t8 u1 N4 n* }$ r- T
  14.         struct sockaddr_in addrSrv;
    / O5 \6 [) o7 ]1 ^! G, v
  15.         int len;
    : Y2 y, U, Z, f8 A9 u: L! @: L
  16.         char recvBuf[100];( ^; a0 i0 d. L* Y& a( P6 L3 l
  17.         scanf("%s",recvBuf);
    8 Z: y3 p3 H4 O( ^% K+ a$ ]
  18.         struct sockaddr_in addrClient;
    & V, \5 c% s8 q( ?' g: B
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    1 i$ y3 t3 ~5 S. X
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);7 D# G. m7 l+ n% H4 [: q- N# b- y
  21.         addrSrv.sin_family = AF_INET;0 G+ ]/ J2 P! Y0 S: V# X5 i
  22.         addrSrv.sin_port = htons(6000);7 ]8 A- h$ k1 d, h/ g9 O/ q
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));' v% j, P' Q/ ]+ L, J) L
  24.         len = sizeof(struct sockaddr);4 `7 @+ ~( @: m. K( r
  25.         memset(recvBuf, 0, 100);. Y: H4 O0 a' v0 ?
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);+ p5 q, I6 s/ p/ C% ]% n2 I
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    ; b/ p6 |, N* N, s1 U3 `) |* Z
  28.         printf("Client data is:%s\n",recvBuf);
      j9 M! {& n& F2 E4 y; o% W* X: A1 Q
  29.         close(sockSrv);
    - L" f6 z: F' M! m1 W
  30.         return 0;
    1 G2 S9 ^/ g/ \9 P# g5 Z4 |( Q
  31. } 
复制代码

3 B3 s2 o6 P7 S! a0 K) W8 Y. Q4 X, t2 s3 w8 O
: ~8 J2 }" ?( G1 b2 U  E. h

0 W- z) q3 n% T5 S  g7 d




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