cncml手绘网

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

作者: admin    时间: 2020-5-9 02:20
标题: C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
# t- O" t: ~/ G* q$ n
  1. #include
    & ]) e3 }. z+ f  X; W5 e0 `. E
  2. #include
    , ?" a7 i4 v4 R9 e
  3. #include
    : ~3 T  G" \5 R0 }, p) ]; ?; o
  4. #include& Y, z+ {3 `( f2 X
  5. #include
    5 z. e% g2 n4 o. F( T
  6. #include. O1 T1 L4 Q1 D, D8 b5 U: k
  7. #include
    * `+ P; f! o3 }, M, H
  8. #include
复制代码

( |- h7 I$ _  E; U2 i6 a$ V9 T
: L$ k) `* ^- e( g9 `  Q服务器代码如下:3 Y3 F  }: Y* d5 X* j! o) D9 T, l
  1. #include
    3 p3 @& N6 y7 Z: e
  2. #include
    ) L; o+ W! z& v# I  P# n
  3. #include
    ' G  G) ^8 O7 v$ g; P/ m# f
  4. #include
    7 r+ K# x+ w9 c
  5. #include
    ( ~: t: z1 S- t1 z( k4 C
  6. #include- n* _4 O( }2 T7 I9 J9 J
  7. #include+ K4 w# }& s" A6 J  _- k0 `# \; E
  8. #include
复制代码
4 X5 Q, b6 Q- j/ J' z3 C* B' p

7 q% {3 P, K: q0 y# O3 u
- r4 X2 D* u+ i  G( P' z3 q# O
) ?7 E0 U- w& o( j; X
" h4 ^0 X5 w+ B" N+ @9 v6 ]- I- q
6 b' u3 r- f) ~4 ?& m3 \, p: S

+ t' i  t" X/ _. [: z3 V" f. I
$ _2 y2 h% Q" L$ r

7 c; g& `6 F1 }) B+ d) i2 e

( |6 @+ `1 o5 O0 C9 {( F' z3 x6 p$ d# g* K

/ d# D# `. a' L2 O- k
0 |# C' Y' x/ f6 p3 R* M
4 r( K. ?! M4 U. b' K5 I
6 z$ Z+ G9 X2 H: o. `
# z, g8 o$ d/ c0 M- `
9 A3 ~& u( _8 y5 z# C& L
8 k# d; b; J$ Y- [9 |8 D$ e
. _) `7 v+ K/ U: r2 O: J  E

! j  n' d6 c4 X( m. P
作者: admin    时间: 2020-5-9 02:30
服务端:, k$ T* U/ a% g9 }; S) S% L; }
#include <sys/types.h> - f& f4 s7 n" t& U
#include <sys/socket.h> ! z2 m* s3 w8 K
#include <unistd.h> 
! ?/ M. ?; |, ?7 d( {9 O$ `#include <netinet/in.h> 
9 O' e; D  q. C#include <arpa/inet.h> 
4 ~7 C! h9 J. G#include <string.h> 
% Y6 I+ q# i/ n# M# R#include <stdio.h>  & s3 l$ a$ U0 f4 L" @! x
int main() {$ w, j8 N7 |! ~' d" a$ S3 Y
        int sockClient;% G& p; x" R) A6 M' l) R
        struct sockaddr_in addrSrv;# O3 u5 Y0 k' }% V( \
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
' f7 c: n0 @) z2 D        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");4 K* s3 ]0 B1 m; x$ E& d
        addrSrv.sin_family=AF_INET;+ ~- {+ x" l' t+ O( S: D' l0 b" y
        addrSrv.sin_port=htons(6000);( P7 f: V& }& O
        while(1)" b. E3 N! [# w# t# @
        {
* u/ f; ], v1 E! ?  j) i                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
! v% G) [1 q' {' b  _- R                sleep(2);, d+ t; y6 k! n3 S6 g  H( `- [
        }    # g2 X! ~& m! N
        close(sockClient);  ( N- V6 C6 [8 J+ o' |
        return 0; 
1 }4 P* O; }- P}# Q( X& ]) E% V7 f! M

' ~, D' f# w8 E( A0 r% y1 S% [+ S" U3 R' V3 k) r
客户端:
  1. #include <stdio.h> 
    + v( B6 h) X# D" K* z' M/ w5 N  `
  2. #include <sys/types.h> + j2 T1 B5 V/ {; B: K
  3. #include <sys/socket.h> ' [$ Q7 p6 C1 J. `- c( ]; f; H5 D
  4. #include <netinet/in.h> 
    5 l9 H  L) P4 H
  5. #include <arpa/inet.h> 
    " V  X0 \, p1 I6 T: @
  6. #include <string.h> 
    7 |, p/ x; ^  d, ~/ c' J4 Q9 [
  7. #include <unistd.h> 
    7 i7 U8 @" @- ^# m; d3 N
  8. #include <fcntl.h> 
    1 h; F! H; g5 M2 v
  9. #include <sys/time.h> 
    2 r; I3 E% W1 v; i/ s2 L  l
  10. #include <sys/select.h> 
    7 a$ e  v& K9 `* J; h+ X% W: U2 X
  11. #include <sys/ioctl.h>  
    3 R4 `/ \, r1 F; v& C4 z+ w
  12. int main() {
    9 x/ j. F' O+ H3 N$ Y
  13.         int sockSrv;
    6 @2 \/ F' E2 h1 {4 ^9 e' [' X
  14.         struct sockaddr_in addrSrv;! Z$ R$ R7 ^7 @) E( Z
  15.         int len;
    % b. W/ B' t& w! o
  16.         char recvBuf[100];
    + b2 L: A9 l0 m- h, \
  17.         scanf("%s",recvBuf);. g9 \& y1 l. h9 L$ Y1 F
  18.         struct sockaddr_in addrClient;' o2 |, W. E% U' z" t1 l
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);0 u  I8 _- Q6 T: c9 v& A) y
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);+ W  {4 `6 L# H' F; h4 i3 J: q* @
  21.         addrSrv.sin_family = AF_INET;
    9 \3 q" k1 V0 k5 _0 ]! m* Y
  22.         addrSrv.sin_port = htons(6000);( D7 \. S5 O2 x; g( |
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    7 T; `  R0 E+ J( k2 X' K5 \( J4 x
  24.         len = sizeof(struct sockaddr);9 T5 C7 O& N) x; c
  25.         memset(recvBuf, 0, 100);2 E7 B* ]3 F9 ~
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);* l+ Y2 K, e) I! K
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    ; C8 w. |9 X# ]2 s# V7 m
  28.         printf("Client data is:%s\n",recvBuf);4 ?% n8 e1 ]+ W- ~$ q( a
  29.         close(sockSrv);
    ' Y) ^: r8 R  H; S2 d( {
  30.         return 0;2 U( r% A8 k; E0 L
  31. } 
复制代码

- m: T8 w5 }) s) P! B0 t- v" d& k+ F- _* @. T
5 @# U: Q$ v+ {' R- I" Z+ ?/ e
8 _% C( O8 T. q( u- {0 M8 _





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