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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:1 U6 j' \' \7 V9 H) t
  1. #include
    ( E, J  g2 f% ~  u. `: e% u5 g
  2. #include5 d0 ^2 r; B6 X! F( \+ k
  3. #include
    / I% Z7 W, _* S5 v9 W* f
  4. #include1 Z& i4 a# |" T, \/ ?
  5. #include* ^# k3 {& A. z0 z7 @* u
  6. #include( \+ p- t: l, x7 P# {( e
  7. #include9 n8 t( V+ z: F& N0 f
  8. #include
复制代码
9 a& j# l8 s  ]1 S3 w; |
+ Y8 F: b/ X9 g# J7 e" l( l
服务器代码如下:
5 O+ k' @" w5 @6 [3 [& }8 e
  1. #include7 T& L7 P  F) |/ T4 N) a0 S
  2. #include
    ) P1 Z- M, T' U7 h  {' a. A# f
  3. #include
    4 k$ g+ n+ F  ^6 _: q3 |% _3 C
  4. #include
    " V7 U) `  `# r$ S$ S
  5. #include0 s  N: y1 U/ _/ o9 I" P( [7 N3 p
  6. #include
    & ?1 C  i# q, N7 O0 U: k
  7. #include
    8 B9 J3 B- ~6 Z0 l% _2 w
  8. #include
复制代码
; K& l1 X- r8 [5 u
6 l  v3 X( D8 g, D( O

% g5 A* ?7 l" ~% R
1 D0 w+ }/ F& ?; V& j& }5 T( S

* M5 N& w4 z9 w- ?% {
# Z: g! W. ~7 R/ n; B, F  T
6 v" [& V, ?; u0 X

7 D3 k4 {, p* T% ], W8 U; Q# V# z0 z0 g2 `' B+ m

8 N/ L8 m4 n1 N' _1 i) J0 Z8 b" s
1 k+ V3 A( K/ J* u

9 H: o7 P, X- Q: x! ~1 {; r7 ?
' T$ N  d# n9 ]4 D* H5 G' a6 m

/ V, j  D7 j6 l8 b/ }' f) @
4 m! U" b/ [4 T; w- Z1 Q' q' a
. v' Y! S7 K# H
' N$ ^  X/ N+ U/ A0 x+ Y! j( i
2 _/ I3 q; B! @. |

" \2 N+ d* Q+ C0 P
) }* P7 ?, d1 f, G6 d. w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
7 Z! K- i. b$ {, a#include <sys/types.h> 
) n0 s4 i3 ~) @2 ^6 z' e#include <sys/socket.h> * A2 S; ~, t( {" T
#include <unistd.h> ; {1 n' g. Z: I
#include <netinet/in.h> 
' ~6 n2 f+ @0 B#include <arpa/inet.h> 
/ M: f  u$ n. ?8 v% W8 s, h8 v#include <string.h> & M$ ~4 u$ ]- h: y5 I- C6 S
#include <stdio.h>  / g( t; e' M+ p2 ]3 p  \' W& H& L
int main() {% S+ Z& R0 k6 q6 V& E2 F
        int sockClient;
$ L5 c6 ^! e1 q        struct sockaddr_in addrSrv;% h1 w6 @/ y! s/ D" I
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
' F* V. I' q1 M9 m) \        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");; ]& A% b. w+ j  P
        addrSrv.sin_family=AF_INET;  g7 d; ~4 {6 i8 J0 X
        addrSrv.sin_port=htons(6000);
" x' W  Y' p2 t* X4 G- z* t        while(1)
! J* B1 X1 ?$ B# I        {
( p; i- M6 Q7 L) N; E5 s2 a- W( `# q                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
# G6 h9 ^. A! a1 {                sleep(2);1 X0 G3 g; W5 L9 ]
        }    ) [* G# e3 f1 o" j8 E: h7 g
        close(sockClient);  
7 \' w. m! V' G7 R9 ~3 J) _. s        return 0; 9 k7 c3 D% O5 M% @5 e
}$ R8 S$ f5 T: N) S

2 N% x5 P- y) c# X. P/ m& ?4 t  J0 h0 U8 _$ s5 w: i
客户端:
  1. #include <stdio.h> 
    2 h8 _* n/ e* K6 }
  2. #include <sys/types.h> 
    ) q6 i9 E5 {* n' U9 L: E: ~
  3. #include <sys/socket.h> 
    " d6 Z3 r9 E) t+ o; g
  4. #include <netinet/in.h> 
    7 X1 U( N7 y2 m" A2 k3 P
  5. #include <arpa/inet.h>   E& M; E3 w6 Q' B
  6. #include <string.h> 
    8 {. O; A4 }8 E$ G0 i4 J& d
  7. #include <unistd.h> 
    ) D& o7 N" [4 M' A2 v, B( a* g
  8. #include <fcntl.h> 
    0 |( R$ ?$ L% s7 c
  9. #include <sys/time.h> 
      u3 e  f; x/ a: j' G6 v
  10. #include <sys/select.h> 
    % ^- X  O1 x, J% i' c
  11. #include <sys/ioctl.h>  : Z9 X3 _8 x0 X
  12. int main() {- n* W. v* y' i' X' t6 c
  13.         int sockSrv;; R5 s3 @! \7 [, k5 ?
  14.         struct sockaddr_in addrSrv;
    5 k+ o8 h; k; ~
  15.         int len;# Q$ z. t" F, l
  16.         char recvBuf[100];# e; T1 b: [0 [/ v
  17.         scanf("%s",recvBuf);
    ' w3 r& {" d# z/ k* w- h& Y
  18.         struct sockaddr_in addrClient;3 r+ j6 E! B2 N% c+ C: m) P
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    4 t9 n# V6 ^2 v1 E
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);& R/ J& f: t+ V9 o5 F7 v  e
  21.         addrSrv.sin_family = AF_INET;& ~' L  ^1 `6 b5 U5 k
  22.         addrSrv.sin_port = htons(6000);4 Y& K- b1 F0 b* R+ [. P- R6 G
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    3 E( A  G9 ~3 p( ^' C
  24.         len = sizeof(struct sockaddr);
    + x; s. J$ B, J: x! t7 r' q
  25.         memset(recvBuf, 0, 100);* o+ _, Y3 K+ H3 a6 n
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);. ^! G" d) B6 P. D! T! ?! N
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    9 k' x. w9 a9 W) f: i1 c: D
  28.         printf("Client data is:%s\n",recvBuf);
    4 a9 [8 Q& i3 P4 s, S
  29.         close(sockSrv);
    7 }# n+ h. T6 v2 H+ t8 D( y$ ^+ k- B
  30.         return 0;; j7 V- d9 I0 F, V9 N1 Q, w
  31. } 
复制代码

% g7 S9 ?2 w+ B: e: _% \% `- `0 H' c0 ^+ d5 W1 x- X4 w: h

/ t& d, |' E  |* {6 V* b* H; Q8 ]
' c* x/ v7 E- Y' d+ c) F
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-21 00:17 , Processed in 0.060517 second(s), 19 queries .

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