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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:; r) a# o- C* A* @) D
  1. #include4 D: E. |" ]/ C. z* d  M' t6 K$ F
  2. #include
    ( w: n' Q' D! G/ X: x
  3. #include
    ' d* ~( g+ y+ Z
  4. #include
    " [5 b' Y- Y; j9 y3 [' u* C8 E
  5. #include
    : O+ N  e3 K# L; R  r
  6. #include
    * Z* x7 C7 o# n1 P) f) h( u
  7. #include
    ; _% y  {: o4 V! P9 P
  8. #include
复制代码

6 H8 X0 b" k2 e6 n
# [" n3 B9 ], R# P4 a服务器代码如下:
; ^. [( t8 `7 z. G
  1. #include
    ; p2 p) H! h6 a9 v/ Z
  2. #include
    4 Q, J7 q  j! h! g: B
  3. #include$ P7 {3 L# W; R) M4 N
  4. #include
    / e# n$ H' ~* P
  5. #include
    2 _- X0 i# r& G. a5 ?' c8 P! D" d
  6. #include
    ( \. M$ d- x" p8 m3 g' q) s
  7. #include# M4 }2 @" e0 V+ C: g% F2 [4 S
  8. #include
复制代码

/ Y& T- u8 f  O0 O0 R3 S8 t
1 z" ?/ }' v3 n. k( G  K; O- {8 |+ u, r7 I& [
/ Y0 P: Y* M1 C5 P* T
. Z$ q4 b* b2 S( R) V6 z3 S* T. O: T/ r

# n6 G0 O7 O9 m$ P- ~! Y6 V' ~7 T2 O9 w* Q8 o# x# N

9 ^( |4 G: Y! f0 `; x1 R# V+ k6 h' X0 E) m

7 Z/ d0 V7 f' m$ X" _; C; _, \! T3 r; E4 Y5 {( r+ z  p6 g
+ j' ~# |3 Q& l( ^
, K) z0 s+ {8 ?3 n$ b9 \
" q/ n% ^  M$ b" C

9 [( k; @! P$ W

" b# g# M  V" m2 q; ^+ |5 z: d% x  i" [) B2 f! b
0 R5 j% \5 u/ c% Q9 o9 ~

6 y) Y8 ?7 I9 Y/ ?+ j* q+ {& [
# n, C: P8 t2 U8 l# D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
' H( R  ~' p9 x4 X; B) H+ b#include <sys/types.h> " t: S( J& h' d' `) C/ \
#include <sys/socket.h> % Z' j5 K% g2 C! W. w
#include <unistd.h> ! T9 s2 w! d+ [2 F0 y& h1 Z8 i% ~
#include <netinet/in.h> 
2 N; A) y2 {+ x  S. K8 h#include <arpa/inet.h> 
0 F; j. B, W5 |  {2 M#include <string.h> 
, Z5 J3 b, @* z2 i#include <stdio.h>  1 U& `0 S( _7 B4 {' T3 c. e/ j8 y6 U
int main() {
" [! z( }9 z- S! Y# s8 e        int sockClient;
2 E/ K4 m5 y3 `' r. U) Z5 ]        struct sockaddr_in addrSrv;2 \1 f4 @; A# W; |
        sockClient = socket(AF_INET,SOCK_DGRAM,0);( `; M6 E! E8 a, a
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");& y  ?% U' \7 V- H6 X' i: X' |
        addrSrv.sin_family=AF_INET;, S( R6 f$ i9 K( f; V0 X
        addrSrv.sin_port=htons(6000);, o7 @& v1 @' X2 j' w6 o6 D/ J# h+ x
        while(1)
$ ^: z0 b: H/ L& p+ T4 [3 l        {5 q+ V& V8 T" w) D; K9 b
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));- A% K# ~: f. \9 h6 z
                sleep(2);
% w- q! D: f3 r; @        }    & w7 y6 W" Q) f3 j
        close(sockClient);  , Q% ?- _1 d1 W) F
        return 0; - C. d! M1 j$ z, D$ ?
}; b. Q6 @' X& E1 j

3 \' l2 |& l1 L$ I# u, `; ?% P2 I/ w. H; e
客户端:
  1. #include <stdio.h> 
    3 f+ a( ?( {: D4 _/ K) r, X$ }2 @# T
  2. #include <sys/types.h> 
    / b- _$ _! A& I5 _
  3. #include <sys/socket.h> 
    % \/ z. [4 }, N* n7 R
  4. #include <netinet/in.h> - i6 J  X. E7 N6 e3 l
  5. #include <arpa/inet.h> 
    1 G; m8 |0 D9 d8 c
  6. #include <string.h> ( t0 r5 a1 L% X1 @
  7. #include <unistd.h> 2 l: b* j2 B% P1 b1 t$ P6 a. i
  8. #include <fcntl.h> 
    ( J7 z6 e8 a9 K& [; x7 l2 X9 L( j  k
  9. #include <sys/time.h> 
    # g. v- ]" W* o5 ]- ~4 ]. E+ f
  10. #include <sys/select.h> 
    * e0 ?( j# c) B0 U5 M, k; W  a7 X& k
  11. #include <sys/ioctl.h>  
    0 O6 b: m2 ?: Q: l
  12. int main() {9 I6 t% ^! [3 U, j3 r4 o9 p; d7 _& g
  13.         int sockSrv;$ V" }; k1 z. E+ p) L
  14.         struct sockaddr_in addrSrv;) o7 @6 {4 i/ b& o, y+ \
  15.         int len;- W8 _. {7 ]- Q1 e9 \/ q# `; X. G
  16.         char recvBuf[100];& V8 J4 z& S( D$ H
  17.         scanf("%s",recvBuf);, P. i5 }4 w4 e4 M7 O
  18.         struct sockaddr_in addrClient;
    3 A+ Q; Z/ F8 l
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);4 s) D6 c  P2 X5 X
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    8 T3 l- y& H) u0 s* w" `9 {, s
  21.         addrSrv.sin_family = AF_INET;: I* M: ^3 [! j) z! [# L' ]: R+ K
  22.         addrSrv.sin_port = htons(6000);
    7 o% O' V' S3 e
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));# F1 \# G* k: @; Y2 B
  24.         len = sizeof(struct sockaddr);
      m( x  \5 K5 |0 M0 Z$ {8 ^
  25.         memset(recvBuf, 0, 100);
    8 P; c% i& V; e' a2 o+ C
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    0 f, o9 C! x6 }* y9 W# e; b/ u
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));: c' D, b; V6 _1 A/ H7 @! Y
  28.         printf("Client data is:%s\n",recvBuf);9 @: C2 B7 v9 Y
  29.         close(sockSrv);( \: S# L# ]' q/ F0 m
  30.         return 0;
    & |0 C9 d. j. W+ a
  31. } 
复制代码

/ C5 ]  p3 x3 P& O9 B, q
7 ]3 U2 x+ W- N: O, m7 v8 O5 ~9 k6 z1 P' a5 l1 E1 B/ x( {* E
5 Y% T9 L8 Q) l' L
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 18:10 , Processed in 0.058955 second(s), 18 queries .

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