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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:5 |9 v. Q# e; _1 l; J
  1. #include0 R8 I8 A, P9 l. z% x+ u' e8 }7 j
  2. #include* l/ S8 d4 ]# T0 N
  3. #include- K# l2 E$ V, m& {  }7 h9 L* B2 r0 m
  4. #include0 f; R3 r( P$ G
  5. #include
    8 H- M2 g+ ^  y  b+ |
  6. #include  V8 m* j4 k* R" c6 p
  7. #include
    # `* @- f; {7 p5 Z" c
  8. #include
复制代码
9 M) g$ Y7 J$ f' j0 a3 w

$ R* e) q1 V% A服务器代码如下:, w( F0 J" j# F, M( v
  1. #include
    4 M- Z& O8 N. B( Z5 j
  2. #include+ F' K& P  j. m
  3. #include
    - F; ?. P% l" ^  x1 D6 x
  4. #include
    ) c& ]# j* r: `" T: r
  5. #include
    + `8 [* Y1 w8 U' P
  6. #include
    7 T2 ]( Y7 v! j9 S* f& `8 M
  7. #include9 ~. Y; E; ]- e
  8. #include
复制代码
# U- B$ [; ]; j$ w

0 Z1 z, @, X8 Y( h8 k( y; a3 b, N2 M1 V& q5 |0 |
( }6 Q, F4 ]: k$ \

1 L" \! q- I( B+ H- y( K

- y% z1 }; ^5 ]! t7 M1 k8 `5 w5 E3 F

, z; s7 u3 x0 ^
2 m4 Z5 E, Q4 q2 C

( G( _3 D1 E! [7 z/ T5 E/ V5 F
, J) `. J5 F( K+ G' k

( |- t( ]1 G; K1 O3 n
  X% ?- k8 K" W8 }2 @- T% k' c
; M7 ?7 l2 P+ u( X. |" n
* W' W# B! K: ^) r1 }0 _! k" ]5 v
+ Z2 a  V  j) c/ P
$ Z6 b% d# R+ @6 k8 F6 z& }

$ k) G  [3 R* O# z; U( \, B
; n: f' P/ m; y9 f! f1 L$ A

' d9 g' Q% @: {; l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:# ~6 ?& N. l; @# a
#include <sys/types.h> 
+ ?; z1 d- V  H' {#include <sys/socket.h> 
6 ]: Q* m( D5 |. M, a! L0 j& J#include <unistd.h> 
/ e8 I1 c7 {% I" o: B/ w9 |#include <netinet/in.h> 
7 c# ^9 v# p' g2 n7 W/ V9 s* M#include <arpa/inet.h> 0 [9 `% ^* E8 E  m/ j' i1 r+ V
#include <string.h> 
6 H( ?4 j& r5 j! d#include <stdio.h>  
) k6 s7 t4 u% d) x# n- m3 Cint main() {
' t2 |3 ]5 X! t        int sockClient;
% G5 I( C) u' p5 T- z! O9 M8 m: D: x        struct sockaddr_in addrSrv;
+ y" e. U% H2 l. Z5 L* u& W        sockClient = socket(AF_INET,SOCK_DGRAM,0);
  z9 x; k: m& t* p+ n        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");3 H9 J1 t# G: ^6 s8 R
        addrSrv.sin_family=AF_INET;6 ~5 N  s- l5 t9 M7 d4 t
        addrSrv.sin_port=htons(6000);8 v  s/ I6 a$ G7 ~1 w
        while(1)
6 h+ i0 x" G( {  h* E+ A" S- Z        {: B; o1 Q: ~$ t0 W2 k0 E
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
; I! f# r" {+ H7 e                sleep(2);. S3 m7 m0 _" ?5 m
        }    
6 R5 E  w) r% k: g( U/ m& o/ r        close(sockClient);  
% V- e6 M3 V. h% \" ]        return 0; / v9 F& `. N% ?/ V
}
4 g* v; ]0 {) A
9 N! D' r7 `: @7 ^5 ~  O
. e( u. Q5 g* c# s6 O! C/ e1 h客户端:
  1. #include <stdio.h> 
    7 Y7 Y2 P' H: F8 R- c1 O
  2. #include <sys/types.h> 
    % D9 A5 t0 d7 N( Y% C- u* A
  3. #include <sys/socket.h> 9 p, o7 m" A' ]3 \
  4. #include <netinet/in.h> 
    " P+ U# ^' q7 Y6 K$ g( U! j
  5. #include <arpa/inet.h> 0 s$ Z; z% Z, F! B3 m+ ?1 y
  6. #include <string.h> 
    ' t; b/ G. c1 Z; d1 o, z# P
  7. #include <unistd.h> 
    : v- ^, z7 w% D/ N# E: O
  8. #include <fcntl.h> . G! M2 k( p  [# `' z0 r
  9. #include <sys/time.h> 
    ; X4 Y5 d2 X  }/ b" I  r
  10. #include <sys/select.h> ' V3 `) ^* m  R) y! z
  11. #include <sys/ioctl.h>  
    - T2 b3 G: }6 i+ L: A' G
  12. int main() {
    / |( i% z, f( ^
  13.         int sockSrv;7 M: a4 X* O- r% O
  14.         struct sockaddr_in addrSrv;
    " ~% M: n: M0 w; }9 }4 Z
  15.         int len;
    - L3 w  U$ a- @2 q3 y- L
  16.         char recvBuf[100];) C7 ~2 |1 v( U8 g9 Y
  17.         scanf("%s",recvBuf);- N+ I. k) ?6 m$ @/ l
  18.         struct sockaddr_in addrClient;
    6 p, k) e- e0 _5 c9 E# w% D
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    5 N  E1 R# Z& f( n. F1 R' _
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    6 ^/ M7 }6 f1 @* i
  21.         addrSrv.sin_family = AF_INET;- @7 C) s" g) L2 [" ?
  22.         addrSrv.sin_port = htons(6000);4 G2 T, p% i+ R8 p1 R
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    ) P, `6 E( b: j  r; [
  24.         len = sizeof(struct sockaddr);
    ; }! G& l( F0 Q; H1 Z! X
  25.         memset(recvBuf, 0, 100);, a- j- f0 j9 j2 A( O: Q( r
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    4 B; A# y/ f7 S8 W8 T0 S" X: y
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));$ M2 D* n2 n+ v0 H1 A8 K4 I
  28.         printf("Client data is:%s\n",recvBuf);" l) R+ k, S+ i; d5 Z8 d
  29.         close(sockSrv);0 [/ Z  t& ?; T8 [
  30.         return 0;
    3 b* `4 {* U) b
  31. } 
复制代码

: X( ?) N. O. J4 y3 K; d+ y& t% t6 Q8 q6 G% m4 P* J
6 @( o) ]% g8 t
8 ?* }5 _3 n3 l0 k/ }5 h0 I. k
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-7-20 18:18 , Processed in 0.063245 second(s), 18 queries .

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