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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:' p5 z  F2 L% e4 u
  1. #include
    * j# D  W; \! I5 a6 Q8 `" b; [
  2. #include& V- K! t' Y/ L, `; W" A7 K
  3. #include! O7 r0 o9 @9 N$ {  h. j, b8 [
  4. #include/ p! s; z0 E* C9 \
  5. #include4 H) m2 S" y9 L  S
  6. #include/ e. B3 u; |% }$ O9 ?* j" U& A
  7. #include
    5 t$ B/ c9 r5 B' H5 U8 L3 T( H5 }
  8. #include
复制代码
( i9 |1 J( _5 k% \5 ?0 Y% j7 m8 X& \

- j! v7 k2 V9 \) h( g  S; ]服务器代码如下:3 `+ X$ H9 j  Z& R
  1. #include
    8 O6 Q& ]' W2 r3 X& S0 T& I2 H
  2. #include7 ]1 f. S0 t# u( Z; `, ]9 @
  3. #include
    ) K/ I1 ]  o( _5 i1 L
  4. #include9 X$ W' q8 x' ^& N* }, l
  5. #include; J2 g* U! z8 F. R! u) i+ z
  6. #include
    , B( Y5 e- c% r
  7. #include
    " }- w: P1 J, X; w) u& t
  8. #include
复制代码

/ l; Q$ G% [6 \5 r/ X' R# i7 |' q5 o; P
0 |# D2 m+ u4 H% C; H
2 F1 |: E8 _9 J5 x3 s

9 _7 i( I% |9 K" J

6 L3 ~- e# y7 Z' |  K
7 j4 f1 I* J1 w1 U" R( j

/ j' `( `4 Y- d1 @' F0 R0 U  {3 N" J+ j' g9 w; e) i8 ^! _

% H* z. f* J7 o! n! e, ]' U" G; ?! S
1 z% s3 n# ~3 |1 f4 M% \' f' X0 z" z: Z

) [: j/ ^. t$ w& {5 I
4 Y3 r4 m, l, [* w

/ z# \" K0 E  K. x% ^
, \6 `3 ]- N9 d, b
  J) s8 ]) t4 `  P

7 ~8 n, h% o0 e; U8 e; ?) @5 h; ?9 j: C0 V" [1 F# o

6 @# n7 `# l  f5 q; ^3 Q2 T/ R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
) u1 i# ~4 |- Z) w#include <sys/types.h> 
! `0 A3 `# h# m% V#include <sys/socket.h> 
" \7 f8 @: Q2 w) H8 G1 c+ u6 a9 ^0 x#include <unistd.h> ) p. L6 L& b( M2 k/ y6 K2 G8 E
#include <netinet/in.h> , R1 A6 \0 i4 T
#include <arpa/inet.h> 
. L- O! I6 y+ s6 U* Z#include <string.h> 4 I0 |. C, J( X; Q( J; z  ^
#include <stdio.h>  , d+ L# n# I4 i3 }0 B
int main() {
' q# n& T0 j9 B6 ?$ o  k        int sockClient;' c) S* S$ ]9 |9 S# ?
        struct sockaddr_in addrSrv;
/ ]* |" m8 `4 n; D" v. _; O        sockClient = socket(AF_INET,SOCK_DGRAM,0);* e" I2 e& ?; Q+ C) M- Q7 r7 A$ Z' ~) |
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");$ H& V! T% A/ I5 H9 E% C
        addrSrv.sin_family=AF_INET;
1 o  h. W' a% A7 P; r        addrSrv.sin_port=htons(6000);
, Y' x* ~2 [; o4 a4 M        while(1)& @! q% s5 Q) u+ n( \% d
        {
) \* u2 a! i2 ~  o                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
+ E- H7 Q0 ~. H; K3 h# w0 c                sleep(2);
* T  w- T* u( G        }    , a4 z1 g  }0 o6 R! _# _8 L6 U
        close(sockClient);  3 z( O; D& Q' t# W1 e- l5 u9 m4 B
        return 0; 
0 V% w+ e" C, r}; P$ D7 \8 N4 d1 K0 o$ `

2 h! n6 r5 ?7 O/ r* x7 I. K/ D& X; f% d7 c
客户端:
  1. #include <stdio.h> " D7 Q  A) j  e
  2. #include <sys/types.h> ( k/ u8 P- H8 U. f( n
  3. #include <sys/socket.h> ) s! R# t2 v$ a" @. r; ]
  4. #include <netinet/in.h> " ~, k" J0 q4 c0 N4 I, a0 o3 i
  5. #include <arpa/inet.h> ) l5 c3 b) Z9 p6 q; h* ^" |
  6. #include <string.h> 
    . k4 b; k+ L9 n9 s
  7. #include <unistd.h> 
    0 m- r; g$ i7 O3 Z& w' W  b- L
  8. #include <fcntl.h> & ]' d: K6 T8 P& c( ^, Y- O
  9. #include <sys/time.h> 1 R& f4 w5 X* E  a* R
  10. #include <sys/select.h> 
    6 o7 v  W* s( }# ]) `1 [* j* u
  11. #include <sys/ioctl.h>  
      _6 w- g8 T) S) y" i8 \* v& S
  12. int main() {
    $ F. e/ @" F1 ?/ w
  13.         int sockSrv;
    - z9 c: H" u1 N- p
  14.         struct sockaddr_in addrSrv;
    ' d9 b  P" d7 y4 ?; y5 c
  15.         int len;% d0 u6 C& v. b# o
  16.         char recvBuf[100];
    + \  Y/ A0 [% s# v' ?- A% a
  17.         scanf("%s",recvBuf);
    + V+ c0 s# k6 a- {6 }
  18.         struct sockaddr_in addrClient;' Y) o5 y6 r' {! O! K4 k
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    2 q9 N! H) P3 @% E3 L% |* t, a
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    * y5 [1 h+ w0 k8 e/ E  f4 j- `
  21.         addrSrv.sin_family = AF_INET;
    ; \/ X9 |, R2 L. U8 @. v
  22.         addrSrv.sin_port = htons(6000);
    3 Y4 L$ S* [/ f: H$ o- f
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));7 W9 M) g9 G/ G+ [; A# T; t
  24.         len = sizeof(struct sockaddr);1 B$ |/ R. C! @3 [" V9 _
  25.         memset(recvBuf, 0, 100);
    - n/ I  F/ M' q" J# V
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);3 ^. Q5 G! G! r) v& @
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));6 Z3 j0 x; Y  @0 t
  28.         printf("Client data is:%s\n",recvBuf);% m- U3 q$ u: k2 p; G0 W' {
  29.         close(sockSrv);  y" d& V  W- G( A8 n( H
  30.         return 0;% {4 F- h9 G  P4 u9 w4 c
  31. } 
复制代码
3 K# s) A* p( @; m
0 V, K! x6 H. Y  v4 i

0 G! I3 S1 d$ o* |1 |7 P% h
+ X/ E; ^+ T, x
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-20 03:05 , Processed in 0.071319 second(s), 18 queries .

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