cncml手绘网

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

作者: admin    时间: 2020-5-9 02:20
标题: C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:+ y5 C4 _$ s' M  o$ c
  1. #include
    3 i! T4 Z: }8 B2 d6 z& p0 M) }' J  d
  2. #include# b: V2 \5 L2 U& @6 `
  3. #include; s2 L% `  D( n8 p5 Y
  4. #include3 N; n7 c4 |) J! k  F, J- v% \
  5. #include) f, }, \, ~8 x
  6. #include
    / x3 w- b7 V" m0 T8 O! T7 F
  7. #include: a& l! y% c. g7 B& O! D( s
  8. #include
复制代码

6 R+ V& Q% ^# Z3 U' K. M8 F, C2 ?+ S. k: {
服务器代码如下:
4 {2 E+ n5 P& c  D, f6 `$ [
  1. #include
    " O" T" c# |3 C6 f
  2. #include6 _$ J. h! G# y* i- |2 ^
  3. #include# K! ?' U# w2 z( ?: |% O
  4. #include
    " ]! t5 A' |6 k5 i; {
  5. #include
    5 `3 M  a9 U. X( W
  6. #include
      q/ w! l# G2 L' E$ m8 ~
  7. #include1 r( h$ t% Y! V5 e) p- E0 z
  8. #include
复制代码

* R& m8 J: c" q- Q& j& w' S! K6 s4 F- T" m9 X
8 [2 `% N3 k0 `& n7 K9 {
2 j6 h4 g9 l4 J1 i
- ~, @% g+ |( a- S

' ]$ s% X& F7 m; l0 v
4 a( W9 c" W1 i" a- m0 p3 l; {; p

  N- c; p3 p. O! l  D- |
: r9 D+ b- a% v2 q# f3 C. f

: Y: C$ {/ Z0 A3 H
( o% }1 S# R* h( M. v4 k* H' q
* N$ P' ^6 E$ q0 b. \$ p

0 h& N5 `' F; s# Q, A$ {3 }
" D0 B6 |, e5 l& e* v

8 C; |0 ^, N8 g: K' N

9 x; A( x; i2 U7 m
$ V: M, w; \% z8 }0 T1 H& R
" H& |3 o! t9 Q. J, c& v

' ]2 j8 c; {8 a4 B) i  r

# B# w) T" X% {
作者: admin    时间: 2020-5-9 02:30
服务端:
% Y/ x' Z. K7 C#include <sys/types.h> 
5 r  T$ P" O6 ~0 [; d2 T7 f#include <sys/socket.h> 
; H8 f' Y- I" o7 z& t- @, h7 e#include <unistd.h> : H) Z1 f' R  S% H4 t( P
#include <netinet/in.h> 
- K4 v. G6 Z* D#include <arpa/inet.h> 
. g, p4 O$ h' T. R% `+ Z& O  P#include <string.h> 4 r- ^& K: W0 o4 g( M; Z7 Z
#include <stdio.h>  0 ]& |: ~6 s% n9 q) W
int main() {
6 U7 C/ p2 U; u1 e# ]& [) ~  [        int sockClient;- j( i* p' z* t% n, j
        struct sockaddr_in addrSrv;; s: `' G. j# y6 R# {  g
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
; N# N( K( M" A7 `( @# J, k1 z        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");5 O& e9 ~" K4 n
        addrSrv.sin_family=AF_INET;
" L4 [3 ~+ I/ z+ G" V# f; h$ z        addrSrv.sin_port=htons(6000);
' e2 ^6 |, ~4 A8 Y- `        while(1)9 S- q6 Z+ h6 _" l2 @
        {
6 T9 x' c, Y& m                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));  c5 H( Y" p2 s
                sleep(2);+ H% o' H( v9 s9 M
        }    
3 z" Z/ N, s( w        close(sockClient);  ) V$ }9 N. e; M+ e1 a) z
        return 0; ; V, u2 k/ f  S* j
}
. c/ x( S' t. _( z$ m
/ n' \4 u, W$ n' Q6 w( b, C- r. w4 M5 A& C; P
客户端:
  1. #include <stdio.h> 0 C/ L# c5 k) v0 Q5 C1 B; o
  2. #include <sys/types.h> 
    6 B; A# I* \# B
  3. #include <sys/socket.h> * T# c) ^  h+ A% L
  4. #include <netinet/in.h> 
    9 L: U. n% j7 K. b8 O' d  s
  5. #include <arpa/inet.h> * ~$ D2 j8 d- T
  6. #include <string.h> . G' i- f/ W5 R" D( K/ s* R
  7. #include <unistd.h> 
    4 Y  ?* B  k: j6 Z: k( V5 x
  8. #include <fcntl.h> 8 U' \' B% d! g. x( |1 S% b0 E( v
  9. #include <sys/time.h> 
    8 D+ D. m& {$ j3 O4 y( r
  10. #include <sys/select.h> / D# N" R% H% U+ Z
  11. #include <sys/ioctl.h>  . c; h5 q' t9 \9 V: m1 H
  12. int main() {
    / k# i. M$ T/ u2 m4 E
  13.         int sockSrv;, w) F5 P% @% J; U. D9 k
  14.         struct sockaddr_in addrSrv;. E* M4 {5 {! Q8 k. ~
  15.         int len;
    ! d7 U2 h9 q, c+ w4 {( g8 U9 g
  16.         char recvBuf[100];5 E3 m- `' `# Q# o1 Z* Q
  17.         scanf("%s",recvBuf);
    $ p* i8 j. `+ C
  18.         struct sockaddr_in addrClient;
    " i+ F' K: h" a) c/ X0 U# d1 e
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);1 ]' s8 S: W0 Y4 g# J9 \
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);5 H6 S, @& V$ e- O3 m" T
  21.         addrSrv.sin_family = AF_INET;
    # [" j" a% R, F
  22.         addrSrv.sin_port = htons(6000);7 X. m( J# k9 v& V
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));) v* v" r3 h. l1 ~% t8 ~
  24.         len = sizeof(struct sockaddr);
    9 y; R2 u$ P' g0 U/ x3 n
  25.         memset(recvBuf, 0, 100);
    , w" H+ ]3 _% U
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    1 m; \8 E4 x& c# m1 G. I* t9 x
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    & N: Z- Q: n" w! S- H3 x
  28.         printf("Client data is:%s\n",recvBuf);
      v) g+ a$ t! z; f2 j% l7 b
  29.         close(sockSrv);; |2 d7 x5 [; T" x
  30.         return 0;! @2 R) M# f5 J! w5 C$ [; I+ L! _) J
  31. } 
复制代码
2 ~3 b  }; c  g) `4 f0 L* \) e* q2 W
- F; W! X# Q8 O- r1 T/ z3 H  ]

" T/ j; q; g: r+ S
/ l2 N$ f8 c* d




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