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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:2 j( L* ~& N( b7 [5 B7 `* H7 k
  1. #include3 \8 X% _- k! K* P# C) k9 s
  2. #include' ^2 }1 O, Q* a2 e
  3. #include) U+ u5 `& M% d
  4. #include8 Y$ h* X, w' J/ B; b
  5. #include0 s' t% M; r( D& j' a) J" [
  6. #include
      }, ^5 |, G5 j
  7. #include0 f( o6 v' H6 c' b  E) |
  8. #include
复制代码

/ z! F) G! a2 v
. E& X* ]9 e8 |服务器代码如下:0 }5 g0 Z9 D  n: R- K. ~
  1. #include
    9 D* m0 }( S- d5 m3 X* s4 ^3 [) k
  2. #include5 w* o7 o( X5 N9 x
  3. #include1 g* K9 y4 T" @/ X& a: j
  4. #include/ e! X7 p' A7 K6 A3 N* F7 K5 @
  5. #include4 |" y( v% F# }6 c' S8 j- \3 e1 |
  6. #include
    1 E% P, M7 R% [
  7. #include" A" p+ m* K) G3 v. V' Y
  8. #include
复制代码
, Q4 L/ S2 [$ p2 {9 M
9 J( H3 L4 [4 C. w, W: F
+ p* S$ d1 J- O' c
* ^2 e1 W5 O3 C# _. ~! ^
# N+ b0 _+ o- _! v" E
6 I' Q1 p9 G4 T& e' d7 i7 E
. w; i, B4 q+ \. }% @" X& _" B
, p- f% v) d. x

  I) G. f8 n$ W8 Y# x' V% a
+ \% X8 O; F6 `$ O1 h

, i: |7 t1 @, z
. e, E* @9 Q8 C6 u* g% J" |6 `: V/ M
1 A- I/ W8 G) x; b

1 P+ t; i& t1 ^* Q  M* a% W- e4 S8 J( |

( k4 P# ?( m  ^' |; H& F3 ~5 ~. T" U2 `8 _" ?# g& V5 M7 B

1 e# q$ u5 ?2 I% v; d/ i  \
. U( U, V! W( _! J
8 n; R& y$ T6 T1 _7 p5 O, u3 j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:. ^# r4 W0 a. N8 v% b. D
#include <sys/types.h> * N$ n+ u% D$ ~/ i! g
#include <sys/socket.h> ; A  d$ D/ W+ _8 d: S$ W! X
#include <unistd.h> : Q% J5 s% E& P- n& R. W: P
#include <netinet/in.h> 4 `0 X2 O5 C/ B5 l* t
#include <arpa/inet.h> 1 I" J5 N* t3 I+ s* l- A, _
#include <string.h> ) a  o8 j% a; S
#include <stdio.h>  
2 T3 ]) o- S' L  ]- r* K% bint main() {4 n7 T( R& R5 A3 ?( ~) t
        int sockClient;
" z" d8 W/ A0 I; ]/ R        struct sockaddr_in addrSrv;# y# c: m- w' R8 v* d+ F
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
7 @8 D5 M  R8 g" e" k( U# e        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");' d8 z; \& x4 W( Y! z
        addrSrv.sin_family=AF_INET;
) _  Y) Q# T; ~. x& b/ a        addrSrv.sin_port=htons(6000);9 R  a+ ?5 W" T# I: y6 n
        while(1)5 F) U. M) v. p# D
        {! j: {( R' d. A5 D$ Z
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));3 z6 D5 r2 M4 y$ P# n( a1 y1 M% }9 r
                sleep(2);
7 J, Y, w) L+ G4 P; }        }    3 H9 `3 u" W$ C' Y( X7 K7 t
        close(sockClient);  
; k; n6 @2 z3 M6 `        return 0; 6 Z0 m6 s4 r5 r- Z3 y
}
+ `7 f4 H; k" [1 ]$ y; z4 _2 Q; U$ w

+ C  k: q. ?2 ]( ~# r! _. k2 H/ D客户端:
  1. #include <stdio.h> # ]# C* W+ v. H- D) _! w. |% i
  2. #include <sys/types.h> 
    ' l- S! _, n# |0 l. z9 X+ l
  3. #include <sys/socket.h> 
    & n* F7 u$ D. @9 F" G
  4. #include <netinet/in.h> 
    6 {5 J8 z, t# m# m. L* |0 ?6 |
  5. #include <arpa/inet.h> 
    , a% g. a0 s' F, |) X8 Z/ }. H2 s, b
  6. #include <string.h> 
    % a( u) x! c2 I' T* D. k) E3 e
  7. #include <unistd.h> 
    5 o: ^* Y0 ?! U" v& o5 z' f
  8. #include <fcntl.h> 7 o- `8 z; U5 Y
  9. #include <sys/time.h> # V; E5 n0 S- t" s4 I  H. f
  10. #include <sys/select.h> % W# I( J7 `1 J) Z3 L, a
  11. #include <sys/ioctl.h>  , C& D! ~9 O1 V+ O. w) R1 Q: j4 N
  12. int main() {
    . o% ^1 ^1 `* I! S, g
  13.         int sockSrv;
    6 P% M) z& \/ w8 p& K
  14.         struct sockaddr_in addrSrv;2 }3 Z2 l2 T% S% I
  15.         int len;  W* \% d* U5 Y! d( u
  16.         char recvBuf[100];
    - Q6 Q% T$ h( ]6 A( t
  17.         scanf("%s",recvBuf);
    9 H6 I% J) S2 j3 q- O" A6 Z
  18.         struct sockaddr_in addrClient;' f! L4 A) W% e6 G9 F2 ]; m
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    6 |/ f: `" I4 e' R
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    & S/ x# P9 H7 v7 i3 N+ a, l& r
  21.         addrSrv.sin_family = AF_INET;* N% ~% ^2 \6 B8 s
  22.         addrSrv.sin_port = htons(6000);
    . W, W- Q- m# V3 }2 A% @  P
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    8 b3 @9 R4 t" U9 Z7 q' h$ J
  24.         len = sizeof(struct sockaddr);" {! E0 J( E: d
  25.         memset(recvBuf, 0, 100);# ~. Z/ s0 L7 o- M% G
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    - x2 M' ?* T( v+ B+ c- a. K
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    $ f5 V$ e! Q* s1 K0 P+ M# Q) c
  28.         printf("Client data is:%s\n",recvBuf);/ l% O5 T1 N8 `. T8 ~
  29.         close(sockSrv);
    " \" }$ R+ k( ^
  30.         return 0;1 P4 w& `6 c) d( n/ v* U/ Y
  31. } 
复制代码
, c3 Q; G7 d8 V$ I

4 C  U1 W4 W% }% v5 K* M- h
4 w% g# Z( x8 M8 `. g0 ^. y% i/ h3 a4 k$ i+ Z8 h/ H
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 16:07 , Processed in 0.075739 second(s), 18 queries .

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