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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
( Z' j3 u0 ?- ?5 g' C
  1. #include
    / W/ s7 ~. W- ]2 L( Q7 P/ Y% M
  2. #include
    , q* Y$ U3 n4 ^; [+ J9 Z
  3. #include+ \! T2 y$ p0 [0 j6 Z
  4. #include
    ' N( F' o, E% m! j- k2 ^- r
  5. #include8 {2 Y5 H, A2 ~; D4 I
  6. #include  \, z+ m/ s6 e4 H! K! S
  7. #include
    / L  @6 w& j; n# J/ ~, H* f
  8. #include
复制代码
, o2 @& h8 W0 F5 s
+ q/ C* W7 c7 s2 e
服务器代码如下:. {5 V" @+ q9 Q
  1. #include
    + h  U9 \7 f4 w; r
  2. #include
    . a2 `( I0 O. |' ~
  3. #include2 O/ O. g2 l0 q+ |/ k$ ]% S4 {
  4. #include
    ) g, J" Y# j" W
  5. #include) t0 \7 M) E. q& M. \# g2 I9 {
  6. #include3 c" Q% j. L" @6 j% s6 U; _
  7. #include/ B9 v, D1 w) G) y
  8. #include
复制代码
8 C. x* f& J5 ]. Y/ k

/ w" V/ ~# ?2 j" J5 l  u8 B6 s& E- N3 P3 y

- F! G& n% N- R) S) v% |8 L( j( J1 k/ Z  i1 j
& Y) C4 _" B7 |: J

0 z+ `: e2 P6 ^" g5 Y0 T% ~4 \& b
1 @% f6 ~. K0 {

4 ~3 E/ c! t( g. b% s1 y

- W5 q' C7 h9 B; ^1 ~: |- J' k6 H/ R3 _

4 q/ ^0 i1 |5 ^" E& o( ?3 L7 W) ~  l" R; T

# ^7 v: T# v( T4 D
2 J: v1 e* k6 r) D0 k# v9 y
4 J( u( y1 T5 l. Z

) x2 W! A8 F8 T" t* n2 l/ U

# h( ~6 k5 t% ~) x
- D5 d5 n0 T- j

# @6 w5 N2 o" v2 w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
5 A4 S. t9 f/ E#include <sys/types.h> - c6 \2 h" w, F2 J1 Q4 y* T3 {
#include <sys/socket.h> 
1 O5 D" j. H+ k" J( W$ F#include <unistd.h> ( \% f9 Z' I% @  T% n7 _5 p
#include <netinet/in.h> 
, {, U( G/ ?7 e/ X; g! I. N4 s5 T0 D#include <arpa/inet.h> * O3 k2 o" d# {, n4 S7 {
#include <string.h> 0 I5 E4 Y; i8 r
#include <stdio.h>  ! a& @4 X; B! \% c& P" v" L
int main() {
9 D) `, Z8 ^# i8 ^! E        int sockClient;
0 F& E6 t1 U$ R6 t# u        struct sockaddr_in addrSrv;& M, N1 h2 b! |5 Q' B- L4 i+ m
        sockClient = socket(AF_INET,SOCK_DGRAM,0);( u" x: l( N7 z% P" }7 a* ]3 f
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");# }8 ^2 |6 B9 S% p8 v1 v
        addrSrv.sin_family=AF_INET;5 H; O; {) K7 J/ V" |5 N
        addrSrv.sin_port=htons(6000);
- k2 Q# Q0 i( H% z/ u+ h" \4 m. j6 z        while(1)
) ~; ?. p2 h* Q& g1 @4 Z        {0 K3 ~& |3 G* d% p) k& n
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
% Y& E1 J6 g+ A4 O& {/ d) J                sleep(2);: v( {0 M+ q  N  k
        }    9 Z+ U6 Y5 B  g& M
        close(sockClient);  
+ y' Y9 B2 v% y1 G6 ~        return 0; 3 b3 v3 e9 G+ _) L' G  Z
}
; k* {7 }/ |1 h2 N1 d% T! m4 m4 v" ?$ V( ?+ [; y# e4 c  c4 H( _
: {0 f- [4 o0 V% P  v
客户端:
  1. #include <stdio.h> 0 g, U; t& ^! p$ E
  2. #include <sys/types.h> , T3 G$ U) y$ n0 `. I7 }; q
  3. #include <sys/socket.h> + H9 D( ^5 F) j- F: a5 X9 l
  4. #include <netinet/in.h> 8 q- o5 |& T6 Y+ O; D1 U
  5. #include <arpa/inet.h> , B! f) ^8 z* f: O
  6. #include <string.h> 4 \; N  m, X% n# s/ v
  7. #include <unistd.h> " P5 c2 R: m# i
  8. #include <fcntl.h> ! f& R) ^8 R; d$ _
  9. #include <sys/time.h> 3 [6 x. @0 r+ ?# L3 c9 S/ c
  10. #include <sys/select.h> 
    ) g" x4 O6 E5 B
  11. #include <sys/ioctl.h>  
    + t  q' P- L# {) \
  12. int main() {
    * M- C' E2 \% ]) D
  13.         int sockSrv;
    ( g0 Q9 S' v( `2 @5 w: V' c( Z. C
  14.         struct sockaddr_in addrSrv;  ?$ B, G) U7 s$ H' f
  15.         int len;# R& ^" |, O% W, `* _' [
  16.         char recvBuf[100];
    " W2 p2 {0 Y  l" C  U, G6 G
  17.         scanf("%s",recvBuf);
    ) D, n9 a2 Z8 G; v8 Y6 n+ E
  18.         struct sockaddr_in addrClient;
    5 ?! u/ u2 [% O
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    / S/ S8 h% N# P+ W  X
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);/ q$ n4 Y% d4 t: ~0 l# \' e
  21.         addrSrv.sin_family = AF_INET;* Q; Z- \$ l! B! m* L4 i" b
  22.         addrSrv.sin_port = htons(6000);
    0 |! e" L. M; F
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    3 J9 ~+ M6 x7 R0 }) `1 p: x
  24.         len = sizeof(struct sockaddr);
    , Z  ~; Z8 n: B( c
  25.         memset(recvBuf, 0, 100);. b# F4 {( u3 @! k$ w& [
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    . W  W- ?" O* L' c. V
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));* Y0 b! A7 x" m
  28.         printf("Client data is:%s\n",recvBuf);$ M+ o- k4 i  C
  29.         close(sockSrv);" f( I0 c1 Q+ b  O4 s
  30.         return 0;
    / }( K- Y1 o+ _9 O4 Z, L3 o
  31. } 
复制代码

) q/ x, x- _# t, ~# P& E! q9 j$ y- ~" Z. r# T0 ]

2 N  ^. H9 u! d& s
& N9 x# d. n( x
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-21 03:17 , Processed in 0.048518 second(s), 18 queries .

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