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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
) F9 O; ]% G" _3 t! ?. D( t) D
  1. #include5 I! u* J7 P6 b5 B
  2. #include% M( j2 y' _% H: Y& _! N
  3. #include
    ( \" o5 I6 x3 M8 m6 F9 P4 n; a5 K/ ?
  4. #include! O% A. J. S: h9 z) ]6 T0 A
  5. #include* W( w$ ~- V* U$ ]3 @& J
  6. #include8 @  N. {. @1 g5 N' E  D
  7. #include+ S: `& c1 \9 `4 K: G) \
  8. #include
复制代码

9 r; y8 S4 Z% w$ d- O0 p* _$ e* h8 N5 |( E' I
服务器代码如下:; X  k  c1 d0 t; H! l; }
  1. #include& \2 B/ K' F, Q- @8 a* g$ ]
  2. #include
    ) d- M5 Y3 D7 L" ^
  3. #include5 _, y* S! a# M, Q3 c* n7 a
  4. #include7 M% u2 u  B7 x; Q
  5. #include
    - T) c  J2 k1 |/ k
  6. #include8 s: G' c: A, D8 }$ W# F$ a
  7. #include
    ; g" u1 a+ r" U9 Z- {. ~
  8. #include
复制代码
) `/ q7 L; ?  [! \. N1 m6 W6 v2 C
% a9 n2 }  O2 c/ E# ^

/ _; ?5 ~1 X6 \0 {" i. k& Z
% T1 Y  o, h4 b6 g& {+ L$ }: a# Q

2 g# p  Y  N" t; f3 f* e7 E
4 I0 y( @* J* ~( |" J

6 g; H( }7 p3 {% O# h% L+ ]
, t1 C6 ~5 w$ G" y# O7 g8 O
2 a4 W. P4 U, ]" v! \+ q% R
; M5 P5 I& `5 t1 j( p: n+ E- z

0 w8 G2 t  r$ v

  x8 u: w3 |# [9 p8 v4 _, a, e5 q
) ~" d$ A- z) a9 ^" ^( a9 ]7 V9 T

$ f0 m. }" h& Q' B/ R
2 X4 ^" M2 K9 X! v0 m# |' _
3 W' F* N9 |8 E# L  M( L) C) M

3 a2 d; x, O0 M4 K

0 m2 e8 c- G3 O4 {1 k  [6 U1 G
7 T+ \0 x7 a# g9 X

6 ~+ Y+ v$ _: z# F% B0 C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
# T1 l6 ~: D5 ~5 K# o, N: C#include <sys/types.h> 
' L0 w6 G! v0 l* L/ l/ h#include <sys/socket.h> 
  d( l, |7 a5 O5 L2 b: m#include <unistd.h> 3 m* F" K) A6 V+ m
#include <netinet/in.h> + W- r6 f' g1 r8 g5 o
#include <arpa/inet.h> 
- A1 e- j7 \& R" r1 i; x; f#include <string.h> 
' n" n  ]0 q$ l/ }: a( {9 _#include <stdio.h>  
4 A' I- U- k3 m1 W8 }( ]1 I9 \  x" Bint main() {# l  v( \" p$ I+ ]
        int sockClient;
) [! W9 g3 i4 u3 |! t! n8 D* s        struct sockaddr_in addrSrv;/ {8 f# `/ R- w% |* @
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
# J$ x. F+ a# b, K/ y, S        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
2 N1 z! J) e, t        addrSrv.sin_family=AF_INET;
: D  l; H. @# W; D1 a7 q0 `        addrSrv.sin_port=htons(6000);5 I' ~3 A) Q4 z% z
        while(1). ]8 C4 [" x! ^$ C& I, w6 ^
        {+ h' h  g) u3 z# b9 u5 e: W
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));7 n8 {' l8 o3 U, h* Y$ B
                sleep(2);
2 y, E* N' Y+ u& o& D        }    
- E0 L" E: ~' C3 i5 L% G        close(sockClient);  1 d. ^' [/ b7 D6 Z- A
        return 0; 
- E9 {; B4 ]& c2 a}6 F, ]% }' W0 V$ q1 P. X

$ P3 B! }6 y, {- J8 R+ P7 Q* S) J5 [
客户端:
  1. #include <stdio.h> 
    4 Q+ X2 E4 p9 L" ]3 s
  2. #include <sys/types.h> / v% {+ T. ]& o) @/ v& k
  3. #include <sys/socket.h> 
    . o+ p' T: V' a% p7 ^
  4. #include <netinet/in.h> 6 b/ W6 I$ g9 X, D
  5. #include <arpa/inet.h> 
    ( P7 @3 z( B) ~5 v1 G  I6 q. [
  6. #include <string.h> 
    + Z2 I$ [3 G! m& b( G2 E4 ~
  7. #include <unistd.h> 
    ; ~: J0 g1 Q9 u, x
  8. #include <fcntl.h> % q8 [2 L  `" o2 t, Z' Q
  9. #include <sys/time.h> / g! z! T/ H8 V' @5 I# i) d8 x
  10. #include <sys/select.h> 
    ; x+ R- H6 D: m2 u7 I: c
  11. #include <sys/ioctl.h>  
    : q+ \5 l$ C9 N
  12. int main() {( v9 M, W/ t4 `# H/ X1 _
  13.         int sockSrv;) L$ T3 J  \( k! W  p9 W
  14.         struct sockaddr_in addrSrv;% E; F9 K" E. h+ N4 d
  15.         int len;
    " i4 |$ Y* h. }/ C3 b! K, _
  16.         char recvBuf[100];" r) r* q, D- p, l
  17.         scanf("%s",recvBuf);$ \1 c0 a3 D; v& W3 `7 f' Y
  18.         struct sockaddr_in addrClient;  m5 s4 d, C9 X3 c  Q
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);# f# E' ~3 m9 p& o; b, U
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    + c" U3 x# u) |* d
  21.         addrSrv.sin_family = AF_INET;
      P" W, p3 ?0 g- z9 y5 W) k+ @- _
  22.         addrSrv.sin_port = htons(6000);
    ) l* Q5 d$ C  ]1 d+ t
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    / y- [* V; Z. @. Q9 _
  24.         len = sizeof(struct sockaddr);
    ) h, F7 K" Q6 Y& e( Q
  25.         memset(recvBuf, 0, 100);
    # _! x& H8 ]5 V3 y: p
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);, c( C( w7 T1 q5 }% J; B
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));1 `, s8 u' h! ?, ~! W( C
  28.         printf("Client data is:%s\n",recvBuf);
    # `' c2 L' d) ?7 i" Z
  29.         close(sockSrv);$ W8 Z* G- l: K- a# L3 F7 n+ H
  30.         return 0;# X6 T1 p- i& k
  31. } 
复制代码

0 ~6 I$ O) |& k7 U+ k
; \; Q2 s( f$ S9 |
" w/ S9 _0 L7 O, c( [# w1 o/ ]. F, V+ u- |' J
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-19 22:31 , Processed in 0.052274 second(s), 18 queries .

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