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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:% N* P0 L3 v4 y2 w7 e
  1. #include
    ! D/ V& I9 m% Y( j8 ]: x+ h
  2. #include. P2 }3 _  _& @+ G/ n5 C
  3. #include
    % N7 Y' x. f& p7 V, G5 r! j
  4. #include
    + l) y/ e9 _6 K  o) D8 J$ K" f
  5. #include
    8 ?- z  S9 i2 s2 n. E  I. ^( V
  6. #include
    / o" W& G0 y3 Q4 S- m% J6 g, u0 _
  7. #include" q; W) ?4 G' Q* ^4 z
  8. #include
复制代码

8 i3 k! K; E2 x5 e# t) T" V# [' C* {$ c4 t
服务器代码如下:) }  o5 ~6 d$ u6 ]1 t* O" n
  1. #include
    . o. g- n1 d4 _5 w$ c
  2. #include% v: o- G. E! S( J( ~* J- c4 _
  3. #include
    3 p; o5 |* N/ u8 {" m0 k5 P
  4. #include
    4 L/ G( o. B4 u
  5. #include
    ; r; ?1 T/ x7 i, j. X7 o
  6. #include" E$ M6 q( z: K% ~, c2 r
  7. #include
    / @+ D7 W4 h* p) p! |
  8. #include
复制代码

$ L6 f: Z3 b( o7 q' a5 y1 k) @, |/ |- J5 y
, a1 u( \7 q) S$ S* G
0 O- P8 ]" e! I9 \6 E% ~- n6 o

. m7 @- I! F' Y( w) C8 t! S
5 H- _/ U. k$ `. h3 p; j, @
0 V( \( \4 [( n( H: g- t9 _, C
0 U, |! s( y5 ?- i5 _3 @/ Z5 D3 I
  n2 Z% z0 Y5 |3 S

. B5 C2 D9 C0 e# y8 z7 O; P- ]+ n1 B3 t+ ?( X

7 d7 l/ [7 f; u* f/ p3 f% X: T. k% B" g
7 c) o9 ~% X% a; I: c) O" P) @
# V& V& k; y* s4 \

2 l! g/ G5 _9 f; O  U' d1 l# T7 s

8 b% Z0 ~* [9 H* o# v( b0 `" Y- S
5 N! X% S# R6 t  x' u5 L3 f0 Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:5 M# i3 C% V) }$ A- G  i
#include <sys/types.h> 
1 |) P! h6 I2 F& W! B( u& \#include <sys/socket.h> 
: z# y0 {5 T/ g2 l0 w" n  C! n#include <unistd.h> 
* N2 G/ X) g) K6 b8 a8 O' ]- f#include <netinet/in.h> 
$ ~* l) l* e5 }1 I# S. @#include <arpa/inet.h> + w4 ^4 e5 P& e' L  Q- ^! A
#include <string.h> 0 k9 {) B, s6 t2 u, o6 F
#include <stdio.h>  ) ~; d2 o0 `' M, i, @5 a
int main() {: c+ j7 c; K5 I! q! L$ j4 X/ o
        int sockClient;/ R* b4 r* |4 v1 Z! p  W
        struct sockaddr_in addrSrv;7 {' \& q, z& ]# P
        sockClient = socket(AF_INET,SOCK_DGRAM,0);* c5 A) |7 {- U; w3 b/ _
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");- W+ u9 d" r" G( y6 ^
        addrSrv.sin_family=AF_INET;8 E8 Q# }4 ?3 z' O6 {  o1 M1 J
        addrSrv.sin_port=htons(6000);9 @9 q; P4 B, ]' D
        while(1)
, k& k$ u5 Z& C- c! Q! N        {- j2 k( J9 f1 A7 h
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
% x* P0 g% e7 {                sleep(2);
' e9 e: w$ O( o: J6 l        }    ' D2 b) J" o4 W6 S
        close(sockClient);  
* v2 f, c9 |! i        return 0; 3 o' e8 K1 K& P  s3 s2 m$ K/ v
}) s6 ^' C$ z5 R5 O* X( o& p

3 D7 b) k+ _7 h
0 C$ ^- l; H/ J1 K客户端:
  1. #include <stdio.h> 
    5 v" b/ c) ]1 K5 F: a" Z
  2. #include <sys/types.h> " q5 Y- ]4 p2 T( @9 V
  3. #include <sys/socket.h> 3 `* D6 i6 \# I  S' Y! S
  4. #include <netinet/in.h> 1 N3 t% X3 `( S, P, c3 `$ L
  5. #include <arpa/inet.h> 
    / x! T8 b" S; H! C" Y3 P5 G5 F: P
  6. #include <string.h> ' h4 Z1 P  j3 M
  7. #include <unistd.h> 
    ; Q6 s( ^7 h8 q4 S0 j/ ?
  8. #include <fcntl.h> 3 i" }  b9 u5 B2 ^
  9. #include <sys/time.h> 
    : F, s( h* W) v& I1 [( J1 o1 l% G
  10. #include <sys/select.h> 
    1 T8 A) Y2 E. }" R- `' h: _% [8 \
  11. #include <sys/ioctl.h>  * {5 X- K3 v/ Y% n
  12. int main() {+ e4 H: T5 p2 m& g0 U
  13.         int sockSrv;
    0 j4 X( o. h% {7 P
  14.         struct sockaddr_in addrSrv;
    ; b: D% i4 Q# F9 q: d1 I1 F
  15.         int len;0 u& ~4 k$ F9 ?; Z2 {
  16.         char recvBuf[100];
    ' i( _+ F8 d% _
  17.         scanf("%s",recvBuf);
    : I+ C0 f0 c2 Y* O
  18.         struct sockaddr_in addrClient;
    7 ]+ k- D+ I! d7 X3 h8 k
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    0 h& \9 ]- R5 v7 o5 S7 c" L' G
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    ! u# \& f3 G' x% S
  21.         addrSrv.sin_family = AF_INET;
    ( T4 y- A- C! V) m# c: c2 s7 E
  22.         addrSrv.sin_port = htons(6000);
    3 t3 b# a' G# R+ V! U' G
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    5 Z) u9 J- b. s" s4 Y! h9 ]
  24.         len = sizeof(struct sockaddr);2 C, N7 `  n/ \# O& F
  25.         memset(recvBuf, 0, 100);3 h6 v* _+ {8 k; g1 W
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);* y7 N' n9 Z7 z) R
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));9 E- g9 ]& W7 o( ~# n4 ]
  28.         printf("Client data is:%s\n",recvBuf);
    ! T* }' D7 A* Z& n7 f) i
  29.         close(sockSrv);  l5 w( ]8 l1 a# \5 V! y) B
  30.         return 0;# X0 Z0 d" z1 U9 W$ }: K# W
  31. } 
复制代码

' b1 t! ?3 k$ u+ T1 ^% w: R6 V; Y+ s( g# B! E
' q9 i1 W* Z% N, m" j5 ]

8 L1 l1 {& T  }+ C2 v6 e
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 10:47 , Processed in 0.114741 second(s), 19 queries .

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