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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:% g, ~) q8 u5 S: V
  1. #include+ o2 l+ _- R: Y) J6 `
  2. #include
    7 r7 M7 {% I, L8 [; s# v3 f; t4 _
  3. #include! K& F8 h/ t1 v8 K$ K) A% l
  4. #include
    & \! a; }/ }# {. J
  5. #include
    0 G3 W% A4 w5 D7 a
  6. #include
    * n- _/ p/ L" B9 N3 d9 V1 F
  7. #include
    5 O/ s7 l( `- N
  8. #include
复制代码

" g7 k8 [- X- m- n7 [+ S7 K
  W* o7 E3 F+ y" P服务器代码如下:/ _2 Y3 T4 i: H/ b1 W
  1. #include
    1 |+ m! C0 E2 M7 m1 n2 b
  2. #include# h+ W+ Y& _5 r7 L9 s
  3. #include5 @8 a4 p* y, _/ q& f
  4. #include, g, d! v" h; l3 m
  5. #include
    0 i+ q  W7 b& s$ s3 V; [6 m: }
  6. #include
    0 b$ r3 C; P- c7 l
  7. #include
    " S$ G! D) D: H
  8. #include
复制代码

) |+ A/ N0 Z* c: a6 x- [) C) ?2 U3 \0 H' n( [* U& h& w- J( m
% `+ w  Z# f2 O1 m5 t  ?2 x

! q0 O% i8 y1 p( ^5 x0 a3 }2 l" X6 I, Z7 T
5 K' q; S) I& W! i! l  f: Y% S, D

' H4 h$ b' k6 i: x5 f

/ j, d6 H  K$ P0 a* }9 c5 d; s! `
5 J! R  h& e* f) w- Y

) N1 ^3 i4 F3 y6 u
" {( h9 I% ?" k) x0 W' @0 w7 W! r

1 d1 K/ l7 h9 H4 u. R4 M& k
( C" I) _/ [3 h, m* {2 d

9 O) Z7 j' n( S2 }$ e
8 \! ]& h( c. J7 p# s  Q3 _7 u5 u! k
  g1 Z+ u% E) W. }/ H6 H

2 ]+ T9 U, G5 c4 y

, b: A$ u. G0 F2 Y, [8 T- {. f( B: P/ j% O+ z. w2 Q5 s8 V# D) T
  z0 Y" y9 C/ J* W; L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
0 g) o8 g( _1 j" _8 d#include <sys/types.h> + ]  I5 W: J# v5 r
#include <sys/socket.h> 8 [5 _6 S, z& M4 Y
#include <unistd.h> 
* K% ~$ A, d5 }' l#include <netinet/in.h> . e2 f  d; k0 i% B0 F9 f- v
#include <arpa/inet.h> 9 |+ _8 X+ X* R; m* k& S5 z. @
#include <string.h> 
6 t6 v! D) _% B+ N* ^# `#include <stdio.h>  
  V: u. P- ?/ E2 [3 y" ?3 Iint main() {7 L8 i: ~6 q: U( e
        int sockClient;
* k) W: J7 Y5 f, [        struct sockaddr_in addrSrv;
' C9 |- H& k1 z% P' t# x" d# T        sockClient = socket(AF_INET,SOCK_DGRAM,0);
5 \& s; d- x% H, P        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");* h8 F& H9 U2 K2 h
        addrSrv.sin_family=AF_INET;
1 [6 n7 i: ~( W8 R4 @! m        addrSrv.sin_port=htons(6000);
. |7 p; T0 ~9 T3 I8 b$ k( B        while(1)0 i# F% i" f& X" I7 ?
        {: K1 O+ b3 O; {, R+ I* T5 }
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));+ e# p9 H1 s' x$ ]/ D0 |. h
                sleep(2);
: [2 Y3 g5 k7 a8 G# I0 `        }    
& F/ |# n6 G  o& \, A) Q  f        close(sockClient);  
/ O% d9 ^0 N# k$ y5 b: D/ N; a        return 0; 
8 U& Q& q9 ?! ?" _; W' _}
$ l/ i+ z6 U- Q6 T7 o* x" f. l8 `( K4 R2 ?- v$ \# \

" \0 K% t- I2 N客户端:
  1. #include <stdio.h> 
    1 w, r% j2 q* r- ]; S
  2. #include <sys/types.h> + _/ [' {1 m/ a4 H, w4 {) v) o2 G
  3. #include <sys/socket.h> 
    9 ^; q7 j# V1 q2 Q& c/ h
  4. #include <netinet/in.h> 7 k* {! N1 L5 f! x
  5. #include <arpa/inet.h> ; v: l1 R! e, q+ @( m3 d( N
  6. #include <string.h> 
    * ?/ i: m# o. p+ w/ Z5 v
  7. #include <unistd.h> 1 w; s. z  P6 a5 p0 l/ @9 `
  8. #include <fcntl.h> 3 U9 }' Y1 _1 h
  9. #include <sys/time.h> ; Z9 r& c  D0 v8 ~
  10. #include <sys/select.h>   |: U7 X+ o( C" Q8 Q9 H4 z
  11. #include <sys/ioctl.h>  ! C" z/ y9 }, ?# P6 M7 Y& r
  12. int main() {
    5 Y% i; g8 \& V" j& t* `
  13.         int sockSrv;
    " D4 K; h+ |) n7 w4 V
  14.         struct sockaddr_in addrSrv;  F% A/ h8 g& {' s( o
  15.         int len;
    6 Y4 T8 V0 b9 }) R
  16.         char recvBuf[100];' U0 T0 R7 Q3 O$ c( P
  17.         scanf("%s",recvBuf);
    $ F  u4 D/ w, `4 e+ x0 ]& [4 R$ D. I1 [
  18.         struct sockaddr_in addrClient;
    & d9 L, ^; M2 K+ N; t. V" c
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);6 h" C! J' |: B  s" I/ d
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    8 {+ G0 O0 X% [1 Y( c
  21.         addrSrv.sin_family = AF_INET;3 i; y4 F7 O0 s
  22.         addrSrv.sin_port = htons(6000);
    1 d+ [' U3 V: q1 |% v) h7 F3 ^) N0 n
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));. s% g% k( C% s4 L* R2 }+ s
  24.         len = sizeof(struct sockaddr);: ]/ l. M" A/ _: Y
  25.         memset(recvBuf, 0, 100);) Q, s  C1 E7 e7 E7 _) P
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);; D9 v3 h+ m; S$ u, a, @$ D
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    / c( M' s5 Z. A4 f
  28.         printf("Client data is:%s\n",recvBuf);' k" l" {) K5 m& C, n
  29.         close(sockSrv);% h" l0 e2 S- Z3 t0 k
  30.         return 0;
    1 `) i3 x6 _" Q9 K2 M
  31. } 
复制代码

, d8 s; r( R# T/ ]# o, G; v$ @+ c. |& H7 s3 o" k& h6 w3 G8 t

. ?! k: Q- C5 ^  ^6 ?
1 \1 f1 \! O8 A. h* b5 S0 E" R
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-4-30 22:19 , Processed in 0.054411 second(s), 18 queries .

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