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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
客户端代码如下:4 ^* P$ X! `; S7 ~- e
  1. #include
    5 k. ^; I, z9 P5 E
  2. #include
      J% d2 |' q& z1 e
  3. #include. _: r9 t4 ]- j0 E7 L
  4. #include% l- O! L# K# f: q! P0 }
  5. #include4 c6 j8 d. K" j1 K* x3 u. ]
  6. #include
    & z* a' o+ E% g
  7. #include8 c9 y7 n( x1 o0 \
  8. #include
复制代码

1 o! T/ |8 F. z0 L1 g8 p3 H( D/ a
服务器代码如下:# Z( k- n3 Z. A" [  D" d
  1. #include
    - s7 w9 n" P, A! T1 S4 T; J
  2. #include
    1 J# \7 b8 V2 T, A7 i
  3. #include& \) q0 j- A! R
  4. #include
    8 j% |7 y% l( r( o6 h
  5. #include
    9 L0 R/ ?2 h* P5 [
  6. #include' m2 q. ?; x0 v9 I5 T6 y4 n% y
  7. #include0 {* c$ \3 ^+ o, y* z# S
  8. #include
复制代码
- q. O& m( z8 W1 u  g: u" B; H0 M+ P

: \3 F  e/ D, U. P, p$ `1 N( A3 F7 h# N

$ k4 g- {) c7 H* [3 g& u
6 `% i+ t3 Z: X# p

1 ]: }. J, M: D% e" U" }- ?' \9 A" H; O1 ^
1 T' L$ m# I/ r. Y
! K  ^! k1 }& y

$ C7 {8 ~7 ~; U; [. ?$ ^' ^
* P' E  L' B- D  u0 H- n# i
) `% @9 f7 y! r

2 r3 J) K2 j( {8 e
$ |7 e' z4 c' M
1 I3 I) G/ I& ^$ a; T3 u
6 O+ r0 L4 w( v) @4 N

& u% j% {1 V5 S/ e  q

9 \( {) U2 v* Y5 m* t
$ ?9 D! h3 L: @8 O) o  ~" \) |& K( Z

. L# k9 v3 V$ X( K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:" `  {4 P1 C4 d' Z
#include <sys/types.h> & r9 C4 c, L+ M! s% n( X$ T
#include <sys/socket.h> 
- u; @4 |3 s* p#include <unistd.h> 
; E( [; e1 s3 e- D  b4 `#include <netinet/in.h> % h' Q: w- U: s" Y
#include <arpa/inet.h> 
" ^# f$ N4 p6 a5 v$ W#include <string.h> 7 k. z7 Q4 _# u) Q& k, m% n
#include <stdio.h>  ' s2 v8 E2 ~9 n
int main() {3 g  P. r7 t" g0 f& f( C. ^& r
        int sockClient;
) i* h) R# L. _3 a! a* }, C- U( F3 W        struct sockaddr_in addrSrv;
& ~6 `& M3 A1 ]& E; x        sockClient = socket(AF_INET,SOCK_DGRAM,0);8 w* q# i' ]+ s. p- ]8 H
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
, `- k' L0 k: n        addrSrv.sin_family=AF_INET;
$ L; F3 ?& H, v) }        addrSrv.sin_port=htons(6000);
/ q& c& C" x& q" p8 m        while(1)
4 S6 }2 Y+ C! a7 V  ?  Q        {
3 e- B" C6 b8 G) q+ [                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
. U. i. N9 ^) ^8 J                sleep(2);' H* J9 A+ G4 b! K' j. u  B1 x
        }    7 q# g7 ~8 }) s) A
        close(sockClient);  - {+ Y/ D: c" d( ~/ g2 N6 w% j# m
        return 0; ) v, |. [+ b, ^- J9 S! i! |+ g
}
/ w* [. @8 R1 i) a& X% K- t$ F9 L( ^9 P2 W6 [( _
6 ~8 y5 W4 [. Q6 y' _- V
客户端:
  1. #include <stdio.h> 
    1 p: i+ g& |3 Z2 S2 v/ `) j9 C' @  t
  2. #include <sys/types.h> & @" D4 g$ C1 o" H
  3. #include <sys/socket.h> 
      \6 t4 @: s, |/ j, q
  4. #include <netinet/in.h> 
    4 u0 T) |# A0 k, S5 o& _) ^
  5. #include <arpa/inet.h> 6 U- o  u6 Z) T$ t: v
  6. #include <string.h> 
    2 l7 v) Y9 b: \7 c3 q
  7. #include <unistd.h> 
    " n: d: O6 ]! Y9 o* o9 x+ S
  8. #include <fcntl.h> 
    - e/ l1 E; `8 F: N
  9. #include <sys/time.h> 2 h% z) X4 x6 q8 ~
  10. #include <sys/select.h> 
    - P% n! D* k  o
  11. #include <sys/ioctl.h>  8 ~2 v" I2 H" d
  12. int main() {
    ! g/ Z7 D8 T" _7 z% a
  13.         int sockSrv;
    ! Y8 m1 P) X3 r& W, e3 R* ~$ U
  14.         struct sockaddr_in addrSrv;) G4 T$ b2 x& k# a
  15.         int len;
    $ K) ]( W4 l+ h) E* |
  16.         char recvBuf[100];. e' C& k, k3 y1 y/ ]0 o
  17.         scanf("%s",recvBuf);% l1 j0 c; w+ }6 f
  18.         struct sockaddr_in addrClient;" k* s4 ^" S( W' R
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);: q6 j6 M  r; [( T* E& D+ Y) v
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    1 N/ X! m$ r. G6 O# S( v6 G0 W
  21.         addrSrv.sin_family = AF_INET;& w; o9 K: |- |+ f2 ]& I
  22.         addrSrv.sin_port = htons(6000);
    2 t/ `  v3 I1 m1 D
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));* @+ j* l- \; c4 m0 h
  24.         len = sizeof(struct sockaddr);7 E: f0 w' I% ~. B
  25.         memset(recvBuf, 0, 100);! J* i' x5 d& g8 Q! q" k
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);/ F$ A' c$ t7 o; `+ @
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));9 l$ J) L  V) l) @  x  S/ k8 ^
  28.         printf("Client data is:%s\n",recvBuf);! d% L4 [, |+ {3 N4 b* v
  29.         close(sockSrv);" n+ B# ^1 w% e' W# o4 V; m, x
  30.         return 0;9 n: v3 X; H9 @
  31. } 
复制代码

8 V, p8 ]2 c* Z, I' K5 G  H$ l1 v* @! U0 n7 T5 T0 @

6 S+ t' _# n% c8 ~4 k1 p: M
7 x& H# m, g) k' S6 l
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-18 23:13 , Processed in 0.103178 second(s), 19 queries .

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