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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
1 R1 ?0 Q; G8 B/ P
  1. #include
    , q" _8 P1 b% ]8 R6 Q
  2. #include; |' |. o7 A5 Z' f, J4 K$ |
  3. #include
    : z; X( u5 a/ b3 `- X% M" ?7 ^
  4. #include
    * p6 v. u9 A: n% X! n7 S  P9 B. Q
  5. #include
    7 T3 i# D# G* Y8 N
  6. #include
    / W% i1 M+ H& i2 L/ ^8 M8 U
  7. #include( K/ N6 m' p. F* v+ c
  8. #include
复制代码
: a/ b( }9 f0 X- p6 F
8 p7 D) x& s4 h# z4 B
服务器代码如下:7 v' L+ W2 _7 o9 Y
  1. #include6 J& V; V; G: ^0 ]  E: I$ h
  2. #include, g1 R# o1 {, p3 L; {# R
  3. #include
    & i) [$ o% s" s) m
  4. #include1 a" e) |. j  C+ |; [# z. x! {
  5. #include. ^- e9 A2 y* W; k
  6. #include
    8 ]# b) i0 u, \9 q2 V
  7. #include
    9 }/ |, R( t. N- }
  8. #include
复制代码
2 n6 S6 b  M& B, w- O. k- N& A

1 }6 y: f6 X) ]* B5 s% T
) h/ N6 k. h+ G5 J4 |& Q& b
' E; Q5 S1 n% X: i7 z

* z/ ]3 J5 l: T$ I8 d# m3 K

' z- x: V* \3 W: b7 L( J. q& a
" z9 _5 I3 ]- I* |& ^& s" ^- ~
# f0 Z+ `7 g( n5 r% y) ]' x  ~
# I7 i( T/ U/ V: V0 ~7 H. W' e" T( s
' w$ @! G! S; u1 p

6 _1 R) H, _! j5 R( _
9 S) P" r& R, N2 q; `* Q3 q

# L" R2 k# w0 H2 J5 U5 c/ w
' ]. ?( _; D) ^& I
; ]$ P$ C  o  `
1 y8 K, {8 w; n
; I8 D1 {2 \: E$ c) w5 ^. P) V4 H
7 W5 P. o/ C/ S+ w

, I1 N/ v1 |8 d" T
, Z' o* R8 d+ Z* a# x$ t+ \$ X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
7 d, J) S: V1 b" v. y* a8 T#include <sys/types.h> 2 Z0 X9 m' p" W, R
#include <sys/socket.h> 
* K+ J6 g) C* L' z#include <unistd.h> 9 J% u$ C0 m& c5 c6 W( N8 v
#include <netinet/in.h> 0 r: S! ~4 |( l* [
#include <arpa/inet.h> 4 ]7 Y7 N+ B3 m, y
#include <string.h> $ i) C9 a" d3 R: _
#include <stdio.h>  . u5 F3 F: l& |% Y) e& V' s
int main() {1 ?; f. [* H7 I8 ^* }( T
        int sockClient;
+ E# m5 ^. @" r3 l        struct sockaddr_in addrSrv;( v5 q5 W* l8 `& |# [0 n0 K
        sockClient = socket(AF_INET,SOCK_DGRAM,0);. H8 ]- W% W! D9 D5 }
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");6 K2 N3 C' R6 f$ q% J' w6 \' }
        addrSrv.sin_family=AF_INET;) o5 V4 S+ m7 q0 Y! ~9 L
        addrSrv.sin_port=htons(6000);
& ^9 D+ K! M( g! F, h, s! D        while(1)
- s* C' q8 I! W7 @. O, F1 p( {$ q        {- O0 C. X0 J' s; |# z) v
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
3 Z5 ^2 k' }; Y. G* J# z! P& o3 ?                sleep(2);8 O6 }! b, Y& B8 g! X6 V& e- y' `
        }    
  |; w" F% C7 _3 l7 g6 ?        close(sockClient);  
% }& X, a, z. }+ J4 X% f        return 0; 5 w/ l# Y% b9 e
}
+ E1 t8 m; M( T
: l0 Z" B" W) v1 E2 T
1 `) {1 E) b8 Y9 Q* N; t. A" _客户端:
  1. #include <stdio.h> 2 U4 P; c; |" B0 `# a+ {
  2. #include <sys/types.h> . L2 W7 \2 w4 F8 Q) C1 B, F! E
  3. #include <sys/socket.h> 
    5 w; `. u. w5 p0 z' `  A" A5 @
  4. #include <netinet/in.h> 
    & h3 e4 {& v8 W  }. _: G
  5. #include <arpa/inet.h> 
    6 I7 }1 d+ `( c/ D2 b# N8 o
  6. #include <string.h> ' [& |1 L' T1 J! ^- V! i+ a! i
  7. #include <unistd.h> 
    1 S+ q# k! B: @" n
  8. #include <fcntl.h> 
    - g+ H+ e) u4 a: _( |
  9. #include <sys/time.h> 
    % b% y: }; s/ j% g' P, t
  10. #include <sys/select.h> 2 u% _/ X& F  _. N( j
  11. #include <sys/ioctl.h>  ' g$ T- L! F, D% A; D
  12. int main() {4 J1 f; A+ V6 W$ h3 Z8 }8 G* W
  13.         int sockSrv;5 V3 w: [6 Y4 r' r+ v& E- e. J
  14.         struct sockaddr_in addrSrv;
    & Q9 j/ I& Y$ y
  15.         int len;. i7 X0 y0 e3 S6 w% C( n  R
  16.         char recvBuf[100];" I. \0 l1 Z, n6 m8 j) R
  17.         scanf("%s",recvBuf);
    3 I( T% T& H; \9 }
  18.         struct sockaddr_in addrClient;0 v# A9 E9 V, ?# \4 M
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ) L% e$ w$ A7 p2 n
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    * `! ~6 @) n! Z8 k# b! u' B3 E
  21.         addrSrv.sin_family = AF_INET;
    $ f0 ^+ s  P# c; m5 Z
  22.         addrSrv.sin_port = htons(6000);+ d5 i) c+ w9 b/ G0 G
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));' }+ q. u& O* l, u
  24.         len = sizeof(struct sockaddr);) d, z6 T0 a2 Q- Q4 S4 k: X* A' G- E
  25.         memset(recvBuf, 0, 100);, q0 K9 j; u: X4 a' C7 F- j3 S
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    " I* S1 |/ r3 i$ B
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
      ]4 Y! R, z. n9 W
  28.         printf("Client data is:%s\n",recvBuf);
    + L+ X7 ~5 b8 x8 \/ K# o2 p
  29.         close(sockSrv);1 Y$ n: {, f/ a) d- T
  30.         return 0;
    9 d( V4 a, n* o/ U1 a3 |
  31. } 
复制代码
: T+ `0 c9 t" u9 }5 E

0 P! X) g) l$ G' j& m: a9 P1 ~5 p: W2 |, s# e

7 O0 H& u" ^2 `6 `6 [: `
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 15:03 , Processed in 0.059220 second(s), 19 queries .

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