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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
客户端代码如下:
  h* a- M2 I) f: r$ Y) w, ^
  1. #include
    & E9 P1 J! D1 S. B* ]  S
  2. #include
    ' {8 p! }5 M9 t# Z
  3. #include
    ) W2 N5 d9 A: y0 ^/ o3 R8 V
  4. #include
    8 f0 \2 u) i# I
  5. #include
    / E* \! z4 x4 c1 ?; k1 K/ a/ _
  6. #include& C! x2 v1 F& d( o
  7. #include
    % c9 \7 `( F. I. K; B
  8. #include
复制代码
  T$ q7 ^$ x7 ?. F
  M& ]# ?7 i& V
服务器代码如下:
, ?  a( a1 @$ y7 J- B; w
  1. #include- S# _! [5 J3 {* b$ n9 F
  2. #include+ s) d0 |9 f& d( f" x$ Q
  3. #include7 {9 h& ?$ w' i6 I/ m
  4. #include, l* q: k7 g  @" D
  5. #include
    ( d0 Z$ K' r2 b% }# u
  6. #include. m: J9 _% ?, l3 \2 X
  7. #include
    . L1 j& G2 J& C
  8. #include
复制代码
# Z4 k5 X) F# s' p! O, b2 c
& P6 Y' X/ T( a5 s6 M
" G6 D( u0 I$ o& a7 {
! k) c/ I1 V7 M; M6 Y# O1 o

7 P0 s! Z+ r% t4 |

$ |7 C9 U0 ?  M) x
, F1 }2 }; D3 ?0 r$ m
8 `" g( U  l0 \5 L
9 H* z; I  d7 P0 T: ?* s0 B* O" Y6 Q
( N; I6 p1 [) ^/ x$ m2 C# {9 }9 ^

6 V  b1 I! X$ H. x) C
4 ^* ]! K% s5 D6 K' E; ]  t1 C- n

( |& t0 M3 _( {/ W" ?$ R& F/ Q
; u7 t! `6 h0 q8 j: a3 T
: }2 n9 j5 i# ^5 o' K( }+ h% D
' x& R% \5 J" r! ?; P+ v& K

' A1 S6 X; I  S
7 l7 U9 Q0 q& l
8 n  e7 R6 ]& C1 x3 K, ~# e

& A) C/ w# V3 a* t6 n# F+ `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:& C( Y* j4 C: N% h% z
#include <sys/types.h> 
3 @. C. Q5 i* L" ^#include <sys/socket.h> 
  h1 ^) P0 d3 y; l4 m#include <unistd.h> + {/ H1 M- B$ H/ _* e
#include <netinet/in.h> 
0 |# V/ i- V0 M7 T8 [#include <arpa/inet.h> 6 K! h8 C9 f; t" @* Q+ |0 \& k
#include <string.h> 
* p$ T1 O+ `% d% a% }4 T! C#include <stdio.h>  
7 J+ j! B7 K) Y  uint main() {) G" O. |" }8 Q1 Z* [- [! T
        int sockClient;
$ n8 ]# F/ x# l7 C        struct sockaddr_in addrSrv;6 ?4 l# b3 s; w- |+ i; n( N
        sockClient = socket(AF_INET,SOCK_DGRAM,0);! e0 Y/ R0 J$ e8 h: N: {
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
# _4 h# c. [' ~5 f0 V6 g$ Z; a        addrSrv.sin_family=AF_INET;! [& c% M: V' ?
        addrSrv.sin_port=htons(6000);
9 }& Y) T! U% P3 C' S* P        while(1)1 T" f$ w& V$ O7 f0 E
        {/ l( u" u- C. j: H; w
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
9 k' H6 F& s; A1 j8 Z2 Z/ _                sleep(2);
8 v# y5 \/ s9 Y( J' G' C$ \! w        }    + s( ]* R: v6 L" p
        close(sockClient);  
  l& w& y# p. b# p  i) ~        return 0; % \, F! N: j" W
}
0 U6 T( W) X0 p1 V6 x, g
: n) u# h+ ^4 K1 `! k
; b5 s+ \- l& m: O0 U5 l客户端:
  1. #include <stdio.h> 3 C  I0 C/ y! f. g1 c
  2. #include <sys/types.h> # |- T, _" l4 h" p9 f# Q9 x
  3. #include <sys/socket.h> : ]0 R0 ^# x9 Z
  4. #include <netinet/in.h> 7 i7 {+ S$ Y& ]- X
  5. #include <arpa/inet.h> & T: V$ v2 T& ~5 k! b0 ?
  6. #include <string.h> 0 u5 _; u4 u! E) x: t
  7. #include <unistd.h> - ?2 N3 _9 ?  g7 @
  8. #include <fcntl.h> 
    & H+ [4 N. C2 O1 N8 R4 X5 p
  9. #include <sys/time.h> & x3 V6 B: i% i  ^( k  R
  10. #include <sys/select.h> 
    % J% y! ~+ d9 c( P' R
  11. #include <sys/ioctl.h>  ( i. A. w' P& Q3 L
  12. int main() {2 F3 k" A/ ?. x2 P1 h" t
  13.         int sockSrv;' v1 c9 D: w: y/ o" l
  14.         struct sockaddr_in addrSrv;, M3 h' e, n/ v$ P6 ^  V- |; F* h8 S# l
  15.         int len;, e1 J0 d5 ~$ _) ~
  16.         char recvBuf[100];4 @1 |% Z1 J- Q8 v& k  u1 s
  17.         scanf("%s",recvBuf);$ ^* }' c: O% G  f$ X% L0 O
  18.         struct sockaddr_in addrClient;
    2 H3 i# k' j6 Y5 d' L% B2 f
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);$ U4 L. a7 m9 ]$ N1 K8 ?8 o. a$ X
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);" z0 j1 a6 x8 l2 f) E7 C; y! L% x
  21.         addrSrv.sin_family = AF_INET;
    : b+ [5 g% W5 G, g6 Y
  22.         addrSrv.sin_port = htons(6000);
    $ J2 d* o2 u2 [' |- |
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));4 G6 [! z- q3 v
  24.         len = sizeof(struct sockaddr);
    8 J8 n) H4 I- W' p
  25.         memset(recvBuf, 0, 100);; V4 w3 ]0 t: @" |1 P/ D
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    2 D; u* `$ r8 Y( @% ^
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    / Q. J/ ~# @! I* p( T
  28.         printf("Client data is:%s\n",recvBuf);8 r; I9 T' v$ Y$ r
  29.         close(sockSrv);" T( B" ?2 K$ D$ T+ E
  30.         return 0;# a9 I" T* q" b" Z/ p0 ^
  31. } 
复制代码
, n- O8 n6 P4 Q7 K, D7 }0 A
$ |3 p" Q1 k$ J) v; N2 t
" z" O$ i) \/ p* U; t

! q- g" C; G; X' i% i6 G
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-21 13:30 , Processed in 0.118396 second(s), 21 queries .

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