您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13894|回复: 1
打印 上一主题 下一主题

[C] C语言学习之Linux下TCP服务器与客户端的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
0 Y# p' V" ^' B
  1. #include
    $ o  W1 t' G8 ~  ], Y" h! L
  2. #include
      A$ V7 `: `$ o
  3. #include
    6 u8 f# d! }- l  @5 _4 X
  4. #include* z) f; y  x; [' O, e  x, ~  B
  5. #include* e4 ]" G# x4 l; @1 ~
  6. #include/ I0 X3 r' k; x+ ^! Q
  7. #include
    8 t' I5 j* y& n: T) p- F( y
  8. #include
复制代码

$ B- E' m; h* V  ^3 B8 p$ ]8 x
/ r3 c* J4 T- O服务器代码如下:
3 ~; u" m( B8 A- s$ H7 M
  1. #include
    2 W2 t( y9 F4 d* |( A
  2. #include
    3 j% o- o  }' J. j" `# \
  3. #include
    / z) `4 G: A$ _' ]1 O
  4. #include
    + Z4 T  }3 Y$ o4 T2 r$ B% D
  5. #include
    % }. U& `; E7 @1 o4 ~% s" f2 {
  6. #include$ S8 R5 v5 C+ I( L! }9 E
  7. #include9 u6 b7 A( F9 S4 e& l4 G3 _+ K/ T2 w
  8. #include
复制代码

' s2 ^+ R/ O$ r0 B
' V) z. Y. H, `# v3 x
" n7 ~! {9 K" g4 A' V: a
& k4 y0 ?  X" S' L: `6 O
  x, H) `3 f# r2 |1 k* P' Q/ e# a

% Y4 p) ^, a6 h1 T: d+ p3 n7 ]4 l1 k0 J$ T
: `! e, s& }* l  ^% [  v
* K" f, W& l+ I5 `) y

" u; L, \# M2 G% \- W
- w; [1 h5 F3 p
% i: p( a- z( O# i' Y+ s1 ]
' `4 i0 J. ~7 q* N' j2 }! A+ C
* i6 R" p$ i1 z6 U

* [  e9 Y4 ^8 u  P& A
% \3 h! T2 n' s, X5 E/ N- ]; F

9 R0 P1 J) i& B/ |) O' m; |) N
% A4 d2 e4 r& s( B  p( C

8 l+ n: c. \7 s+ f/ b/ I( Y

0 C8 q% l, ^2 a! o4 H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:  m9 M! X( H# }( `
#include <sys/types.h> 
$ n" u  Y! L9 A7 N#include <sys/socket.h> - @0 d3 ~* I* P5 [) U4 v  V
#include <unistd.h> 
4 [1 P% A# }! T. f, C- k* i( Z6 ]#include <netinet/in.h> 
8 n; e  q9 ]( E- A$ @#include <arpa/inet.h> 
2 o+ |/ w# C' R4 m#include <string.h> : j( O* \# Q  c* g5 T4 g( ~5 }, H; f
#include <stdio.h>  
) Z6 _/ c( R0 A/ F( p7 [$ dint main() {
$ {5 T: |' Z) t" c' O        int sockClient;
1 o7 Y) K" R6 j  q  C: m        struct sockaddr_in addrSrv;
3 P; u6 f! r. N, o! ^: q" P; w        sockClient = socket(AF_INET,SOCK_DGRAM,0);& |+ W& F, G/ r5 G
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");) Q* L! A; @+ p# v8 i$ v* [
        addrSrv.sin_family=AF_INET;
) O/ N" l) n) |, e. ]: Q        addrSrv.sin_port=htons(6000);
. R+ v3 |- [5 L# O5 K        while(1)% d/ n" z( J* P0 E( v3 p
        {( K9 _/ ^4 Q/ o6 \1 O" @
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));3 ]9 Z8 A% e2 {( K9 N: \- a
                sleep(2);
" F9 s# G/ M7 }4 L& ?1 V        }    
- b0 F: f$ O9 |" U* T        close(sockClient);  
! i1 G+ w% d( l0 p5 r) A        return 0; 
* x' M8 @! T9 |3 L7 L' [; H9 L}+ F; o  l0 s$ Z. r" e
- s, G! D! }, c5 v
3 B* A5 @, P8 k0 a8 t
客户端:
  1. #include <stdio.h> 
    : S1 q$ ?" [1 x5 B% r
  2. #include <sys/types.h> # B+ e: D: Y6 T# O; h
  3. #include <sys/socket.h> / t/ T4 k2 X2 G( {* l3 b
  4. #include <netinet/in.h> 
    - [/ z, N4 B% w* B/ t) x9 s8 ^* i$ H# q
  5. #include <arpa/inet.h> # L; h/ S7 z* M- m8 V
  6. #include <string.h> & q  n  @) X& I# L9 U
  7. #include <unistd.h> 
    " g* L/ _$ d0 q- _* u5 H3 I
  8. #include <fcntl.h> 
    % x0 R: |: p5 v3 h2 ]' C
  9. #include <sys/time.h> 
    " `9 E3 l& {( k6 X8 x, K! W& s
  10. #include <sys/select.h> 
    # `% |8 F8 X- Q: n
  11. #include <sys/ioctl.h>  7 Y4 X5 r) x1 R. [( ]: n6 j
  12. int main() {  P* ~0 {9 n, H
  13.         int sockSrv;
    ) f9 {* f' J* g& ?9 X
  14.         struct sockaddr_in addrSrv;
    8 N  k9 d6 y, V0 z( O: N* M9 w
  15.         int len;
    - z" \, m( @! g9 h& H$ T
  16.         char recvBuf[100];' ^0 q' \- i; W- [+ v0 ?
  17.         scanf("%s",recvBuf);2 n  L0 o7 P: l  [% k8 H
  18.         struct sockaddr_in addrClient;' v7 `. I) u' }0 ?" z2 V- N
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    * P# T  T1 I2 ~6 ]/ |0 L
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    % P8 @1 s5 V# b% m9 s7 s
  21.         addrSrv.sin_family = AF_INET;
    / @1 P, d6 G" p, v" U
  22.         addrSrv.sin_port = htons(6000);
    ( |- A9 z( h: ^. \. _" B
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    9 V6 A( u, I# G0 `+ n# v: |6 I+ g
  24.         len = sizeof(struct sockaddr);0 M) d8 X5 E# M
  25.         memset(recvBuf, 0, 100);
    / u# X. H. U# Q) n* D. J
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);0 Y' b% I! L$ o( t5 p
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));( e  R# ~4 M# h
  28.         printf("Client data is:%s\n",recvBuf);- ^- \4 @7 ?$ t1 P
  29.         close(sockSrv);1 T3 e/ [: w5 K. z
  30.         return 0;
    ! \2 t8 f* P+ J* O
  31. } 
复制代码

3 A. Q* O5 }* b4 I9 a' E
- x# K$ y, k! ~, H: m, {7 \; h8 D( @1 K7 Z- l# \& u- U) H% s# c

( u! @# C% |: Z) o9 H. I
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 09:25 , Processed in 0.072832 second(s), 19 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!