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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:' Q# ?; ]9 A! w3 L8 Q8 G- }
  1. #include8 K8 W+ p' k/ R, E  W& R0 \5 [
  2. #include, B7 p' k3 y: H! a+ s' I
  3. #include" w( h- D: W7 @, X
  4. #include
    $ T: ?0 ]/ G* y2 @( v1 n
  5. #include9 a1 R$ w- T" w* }8 j
  6. #include
    4 b% r7 o8 ^7 W1 k; {
  7. #include
    ) ]) m) B+ b$ l; A
  8. #include
复制代码
7 o' q0 G1 y3 ?( j3 r
. s, A; a9 y; {% Q
服务器代码如下:" A2 j$ |9 h7 {; [$ C
  1. #include
    / m, f. b* j$ d: N" \
  2. #include
    6 ^, C/ [7 t# z
  3. #include
    3 c) ?& c( @, L( l
  4. #include
    7 @9 S6 K0 }* u5 x
  5. #include
    ) Q9 b6 N& Q8 f/ D+ Q: M/ [& T6 w0 v& K
  6. #include
    6 b  }! P: Y, O9 n3 w& p
  7. #include
      O: r- \6 U, w1 A. \
  8. #include
复制代码

* w8 ~5 p$ ~* y# _) P& L! b4 [9 Z$ G6 Y) }) a9 `- t: M  z

, f6 I# d8 e. \1 y! s

8 F# |+ {' Z% w0 T& r& g" v
) n" }4 X# x+ V( _5 }6 d
" u3 U2 [" _/ r! @! A
/ D) N, u/ o* n& M6 j2 K
4 [" }. G& G* X* A  |2 Z" _% F- c

; H* p! K  ?1 J5 U$ M7 E- a
/ C' r2 w; y* N. H& q! ^

4 R8 q4 r6 V- n( K& H. i' O
7 |# V( H. K6 b. s2 T7 S2 H& A. z

) B* e. b' q, w6 Q
& {; c) K4 N* x

: K4 M. V) g# Z

7 N) C+ V: ?: U
9 c9 a* `/ P  }, Y6 a0 j+ i
' Q4 w- i9 b4 e! }

3 p  G8 d0 L7 L, Q
7 v9 ]# `- _1 E9 t3 n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:- J; m( G* J, }
#include <sys/types.h> / G0 p/ Q) i3 S4 h6 c
#include <sys/socket.h> + |* l3 D9 G+ g. Z
#include <unistd.h>   S5 W+ x: V8 l6 c, x: X
#include <netinet/in.h> 
- C! p7 [1 I8 ?* n3 @- w* e#include <arpa/inet.h> 8 h- ^8 ]1 N% V! q6 z8 ?
#include <string.h> 
7 P( y3 K$ B! H. V#include <stdio.h>  0 ?& D2 y0 q2 D3 ]
int main() {
6 E: P7 v8 i0 T$ Q% }& x        int sockClient;
4 d; A! O+ E0 N6 s% H        struct sockaddr_in addrSrv;- |/ v4 l  k) d% n: f
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
# `5 i2 H! d# t: G& j, z        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
! X% {4 S7 {/ r$ i0 I% J        addrSrv.sin_family=AF_INET;. j9 p9 i7 I0 p/ |7 `* }2 p
        addrSrv.sin_port=htons(6000);( U- i. }. W$ i7 \
        while(1)5 [# E1 O( u' ^: K/ G) H
        {  p4 q3 j6 I" p: Z' M
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
# k9 |4 L" y8 h8 x                sleep(2);% P8 z; J+ h) U$ G- A6 }( ^' G
        }    5 ~6 U* ?- F' Q; V/ ^4 I* O
        close(sockClient);  
3 X- Z: H+ a1 o$ O        return 0; 
' E' ~9 T5 x$ A( h; g, |: h}
. \6 O. c, R9 J+ m
8 Q+ ^# ^* a. J% Q) T& @. h+ l: i& h! _
客户端:
  1. #include <stdio.h> 
    ) K2 M9 P" M) m' D) `. F  |0 w
  2. #include <sys/types.h> ( z- y7 q% H- X2 ?2 J5 [0 v
  3. #include <sys/socket.h> 
    + n: `+ x  S0 S3 g! W
  4. #include <netinet/in.h> - K4 ]; g& p( \  M; @; `
  5. #include <arpa/inet.h> 
    3 d4 L* h0 ?0 Z# ~! Y
  6. #include <string.h> . \0 I  h+ \3 n* q5 D! ]
  7. #include <unistd.h> 8 P& v* N: X# ?* E' B, c' B0 }( j
  8. #include <fcntl.h> 0 w/ e9 v. e' i; i& q  d; `
  9. #include <sys/time.h> 
    " r( U5 M1 Y  s9 ?) y# Q" K9 x: O
  10. #include <sys/select.h> 8 _" W. p/ G- z/ u# O
  11. #include <sys/ioctl.h>  
    1 h0 F% {$ Y, A% f+ Y
  12. int main() {
    # o- n, g1 u0 Y# p; w& b9 ?
  13.         int sockSrv;& G- }' U5 `4 W3 F" W
  14.         struct sockaddr_in addrSrv;
    6 u# ]6 |& T& [6 C0 Z8 R* ]
  15.         int len;5 M6 r& t- g4 h! w0 w
  16.         char recvBuf[100];
    ! e4 e6 [: y0 l. o2 z1 c
  17.         scanf("%s",recvBuf);0 g7 Q; `0 V! x" R" d) p6 p
  18.         struct sockaddr_in addrClient;! }& D' _/ Q+ n4 d, K1 }( B# o
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    2 t- ]  t7 y$ }7 Q
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);2 q/ o* v6 v' ]2 b: c: B, b
  21.         addrSrv.sin_family = AF_INET;
    7 i2 P3 O: f) v# m/ T0 ]- C  \
  22.         addrSrv.sin_port = htons(6000);
    # ^/ _$ O8 R  ?# r0 m& F6 f
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    $ F6 V$ h4 v. S9 V: x
  24.         len = sizeof(struct sockaddr);
      b2 L- g- q) D+ U+ M, g1 Y
  25.         memset(recvBuf, 0, 100);
    * {+ R5 R/ s5 J. P" r4 R6 L) o2 L8 S6 M
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);8 o+ y4 u1 _5 Y4 D- ?$ e- ^+ ^
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
      k/ X$ `- R2 H
  28.         printf("Client data is:%s\n",recvBuf);/ U& y$ w4 H, J7 k
  29.         close(sockSrv);
      p. {% _( y2 ~: n7 {
  30.         return 0;
    7 A7 ]2 Y0 V$ X4 o! c
  31. } 
复制代码
; V  S! @* C# O% H& m
7 g3 m$ R) {7 \$ j

* s) X0 c, U9 R: J: |0 m! z) M5 z% l1 k" @
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 13:20 , Processed in 0.054516 second(s), 19 queries .

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