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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:/ I8 s5 u7 N2 r& ?3 l( {' M
  1. #include) s& Y* l6 ~) Y
  2. #include
    5 J' O4 Z& A& K  b3 U3 ^0 E
  3. #include
    3 ^# P" d+ E, A/ m$ Y8 D( Z6 U
  4. #include. O2 Y$ P+ f) T8 t! }: [' u
  5. #include7 ]7 B8 R% I. O, J7 a* }
  6. #include: a" P; u1 O. u/ j
  7. #include- ]; ]9 Z/ e  j8 w; J  ]1 b
  8. #include
复制代码
! O- r7 u* B3 T! |( N

. p; X0 T$ P$ C8 q6 `% e服务器代码如下:4 m, D! Q  o3 c- P
  1. #include6 R6 d2 Y4 T4 ^# B
  2. #include( N9 C% M) M: ^. n" `0 O
  3. #include
    * k8 u7 w+ B8 X
  4. #include
    1 {8 E+ L' [: G
  5. #include5 @' I3 M, v8 A) j
  6. #include
    % C! {; }8 \6 j4 {4 m- {) m" ]
  7. #include
    % W" o: Z5 F5 l# N% K$ m1 p
  8. #include
复制代码

  Q/ g( z# D( E+ I* U) q  c
) t! O8 x% |5 z9 U  D
" B  ^3 c  P- N8 D+ a

+ t0 K" T8 o6 n! \1 B* Z  x
% w( }! ~: |+ z1 ?3 k! T
: f. W- T" r6 E
4 y/ U# {9 m' l2 A. @
. s8 j) t' t, u+ m! ]3 E+ ^
( J+ V% V3 T% p! q( j! n/ T, a
4 {2 J8 q5 C# e
4 ^9 ~5 ^+ \; w) A! @/ `& F
  t4 e( Z5 G+ d* [: j% X
. ?% p: G. V$ e1 Z7 x8 l
2 ^' J; a: g8 d7 b) g9 _
5 r+ Q9 c9 |" d% |" _. M7 o
  A, }  F1 c% a1 V; D

: y1 Q' c2 c5 z" M: z& x& K

( x' r6 k6 G* Z; Z& k3 \: R3 z8 \3 U# |$ K# c% }: w+ S
# O: Y4 {# m3 `  Z0 n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:4 X: \, P8 Z- Y- e  a: C& }
#include <sys/types.h> % i% \2 ?, u1 T  K+ H0 f
#include <sys/socket.h> 2 {% c0 T! m1 G, u, W3 C( r
#include <unistd.h> 9 l$ f) u# X# ]/ H7 i/ e. O- c, z
#include <netinet/in.h> % Q$ G, B/ T+ H4 P% H
#include <arpa/inet.h> 
  |; G0 y) y4 G4 l* K& R#include <string.h> 
5 U0 V& ~/ \! k, O" P#include <stdio.h>  
. b0 [8 ]( h' N7 l8 J( F7 H$ ?& [int main() {, K- {" h0 N- |
        int sockClient;& L( \9 z, i7 K  U4 _
        struct sockaddr_in addrSrv;2 M; X/ z* n* o
        sockClient = socket(AF_INET,SOCK_DGRAM,0);7 x7 E: k: \- ^0 V& a4 @
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
- \5 }! B! ]1 \        addrSrv.sin_family=AF_INET;1 \' A: z0 v9 j0 R& N& r
        addrSrv.sin_port=htons(6000);
4 U/ z& m- n! k/ @7 Z5 V2 A        while(1)
+ B! {! a! g9 F+ L8 ~  C* M8 t        {/ i. K4 E8 G" ~! Z
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
# X! F% a3 o( O0 I4 K% }0 x! ~                sleep(2);
/ N2 w4 B; ^' K  @        }    7 v% J4 a/ A* a  H
        close(sockClient);  
$ c1 a' M* G$ h1 q! \6 b        return 0; 
  U8 B; d( b. c: y; Z: N" E8 {}6 K2 {0 A8 \8 m# }

$ c. A/ b8 h1 `; b+ l0 e
# ]9 Y2 a* e" q客户端:
  1. #include <stdio.h> $ G+ C, a, n3 z0 x
  2. #include <sys/types.h> 
    , K$ [* a! c- y" ]3 t7 q! W# N
  3. #include <sys/socket.h> 0 U+ d9 |* g; U
  4. #include <netinet/in.h> / c7 `# H0 F/ B' l5 I% _  a
  5. #include <arpa/inet.h> % {: U  Y2 e$ v' m3 O
  6. #include <string.h> 
    6 F- C3 u+ ?0 N8 s' ]# x" r
  7. #include <unistd.h> 
    ; B, b8 e6 \( ?6 W) \5 z9 k+ N3 E
  8. #include <fcntl.h> 7 O& R3 |" R# Z& M% {0 R
  9. #include <sys/time.h> ( \6 A8 y+ h, ^. P, w! ]* {# i! ]" g
  10. #include <sys/select.h> 
    / e: m0 t7 N& R+ {  U1 w" G+ @
  11. #include <sys/ioctl.h>  
    ; T6 {" \; p6 D  y5 `" a3 s4 ?; T
  12. int main() {
    . c2 q5 q' J- a# R9 w- Q0 `7 B
  13.         int sockSrv;: a& f1 G! P, M8 X) j3 P3 `  ?; ]
  14.         struct sockaddr_in addrSrv;; v, \( e: u0 ~0 n% i9 p" x
  15.         int len;$ ]! e9 @+ y. D5 ?! s6 l( x; ]) @' K
  16.         char recvBuf[100];
    & V/ H, e7 @* k
  17.         scanf("%s",recvBuf);
    * `: Q9 u) p9 a0 g. p) T6 j* s
  18.         struct sockaddr_in addrClient;1 s1 Z2 t: q9 w6 Y) N1 H) r5 [+ S
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    6 p' q. G$ b( _8 [5 z! P
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    + {! e+ W* d- a% k( q
  21.         addrSrv.sin_family = AF_INET;1 x0 G( {0 e: `$ b) d
  22.         addrSrv.sin_port = htons(6000);. \, S1 C, s1 G9 q; h+ q3 c
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    0 W  ~8 |3 T! ~7 ~
  24.         len = sizeof(struct sockaddr);
    8 s. z2 S" p0 P/ L, I
  25.         memset(recvBuf, 0, 100);
    ( d9 L) l7 |' f
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    . K' m- }8 S" \2 O
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));% y& v( m4 d; \+ K
  28.         printf("Client data is:%s\n",recvBuf);
    4 N# }8 ?, k( V$ D2 b
  29.         close(sockSrv);: Y% K3 p7 x) k" X# e% O5 @5 n
  30.         return 0;
    0 b: w6 w' I1 N/ W6 {7 o6 v* d$ {
  31. } 
复制代码

  m' x1 d9 U: l8 [$ q" ?4 S9 W' d" W8 h' i+ e

2 D4 s7 I; s" D3 P0 D+ s
! Y- p0 H. W8 ], w& p2 d/ O
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 04:40 , Processed in 0.104940 second(s), 18 queries .

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