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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:; r2 K- O; Z- \; e0 l+ y
  1. #include* G2 ~/ F* @/ ~$ u( J8 H$ _
  2. #include- b* h+ y: X1 I! D7 \/ q6 J$ n
  3. #include' n( S) T, w4 C; t2 D4 K4 z
  4. #include$ i0 X% G* o0 P( L1 u
  5. #include* `) l  G# t# u6 R% r& |, K- C
  6. #include$ |, G! N' Q8 L$ x
  7. #include2 P6 {+ w& {( c. Y0 c; Y: ]
  8. #include
复制代码
. V! I& |* d! U6 F1 A

4 X9 @, N2 |# Z& ^: W服务器代码如下:
! Q0 F+ x+ ^( }' c2 k5 ]
  1. #include
    ' z& m- C( N, d
  2. #include
    3 N4 ^7 P, {; a4 F
  3. #include
    1 s) L  e" D+ F5 C7 l  |* a
  4. #include* l  y; ]" d0 E4 M2 Y  n" s' s( a
  5. #include
    + w5 u" V# u) H; k( I* @
  6. #include& I0 c, J. y. F% @5 Q& n7 Y
  7. #include
    % B8 z7 X% n# D+ O  y& ?% p
  8. #include
复制代码
7 H5 t) p6 p8 F5 V+ z
0 S" D2 P" p& m! K

" x; k# _8 S5 n2 l5 f' Z! K+ R  x
8 x3 w3 I/ E* F7 d5 E5 u8 j2 L# G% u. ~
# h+ g" I+ a' |" X

. }- ?: i4 f) h- O1 R5 J7 U
+ p% a, ]8 A- r* B- E* X' A- z
# a; L( K. S; s$ h
2 |: l1 A! h& d. p4 Y* _4 ^& A
8 p6 i! {$ H: X
1 P4 z4 l9 a# z. h+ }3 E: V

$ N& X! `; j. ?8 p7 D
8 l5 x! C9 N  h6 j1 L8 w: ^

; N% o# y3 h- y# K
" r" z, ^) X0 M5 H0 ?$ ?
5 M  o. }0 h6 K' D4 B( o  W

! c( \6 a/ F0 c! c) j  A

4 l- E) O$ `5 D! t5 N- w" D0 \2 {  ]5 E8 c& ^* d

: |+ ~4 k, c* q8 O4 g! e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:9 C& H6 \7 m) x9 K
#include <sys/types.h> 
: R) H3 U% h3 p2 _: d: s#include <sys/socket.h> " h% z9 G& N8 h: G. _
#include <unistd.h> 8 u- ?" j( \. F
#include <netinet/in.h> " ~6 d  H) f. e3 w- [6 A
#include <arpa/inet.h> 9 K! j( t' ]0 y0 t  h- K- O
#include <string.h> 
2 I( R3 Y9 m; C8 \0 I* k4 X#include <stdio.h>  
# W( G$ `# p) Z; Z" F" b; i  @int main() {
& G& ]% n: B; S% n. |1 v        int sockClient;
$ Z0 O/ ]) ~& f; k        struct sockaddr_in addrSrv;
& Z6 _/ C' E) ^2 Y        sockClient = socket(AF_INET,SOCK_DGRAM,0);
: C& \+ \2 [- K+ V        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");# A" Z( V+ `9 \
        addrSrv.sin_family=AF_INET;
' ?) b+ x0 ~% D, N8 k        addrSrv.sin_port=htons(6000);0 @( M1 P% b+ q6 H0 a* A
        while(1)
6 O, [1 n$ r- v        {
  q; Z  G2 C5 B9 X  z; a4 k                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
5 q% c0 ]: w2 z                sleep(2);  X0 p, ?) _+ }
        }    " z- z/ ^+ W1 g( T$ s8 c
        close(sockClient);  
, z1 ]2 w9 H- u! N4 H        return 0; 4 a- A; s6 r2 m7 D
}
' L7 C( T3 n9 c6 @* m
  R. Y+ ^, f" p4 j/ A( h6 o" ~3 m3 D& n4 L* i0 {
客户端:
  1. #include <stdio.h> 6 }- \0 i5 q9 H* ^
  2. #include <sys/types.h> 
    : I( R  |% X! t- I! j. y: ~8 @* I
  3. #include <sys/socket.h> * h. F0 j' B  {0 \9 B8 N
  4. #include <netinet/in.h> 
    % H& e" S' @1 n" {
  5. #include <arpa/inet.h> 
      d+ {' x5 O4 F
  6. #include <string.h> 7 Z; k' w/ l* a2 p5 Z1 ]/ K. s2 h
  7. #include <unistd.h> # Y+ e2 m' _- K+ G. L  Q8 b& r" L
  8. #include <fcntl.h> ; x9 K% j7 @3 d* t9 \& _( F
  9. #include <sys/time.h> + @3 u) p/ x3 `; ^
  10. #include <sys/select.h> & S4 a& D# {* |) N8 e
  11. #include <sys/ioctl.h>  
    . d# [8 ?3 T# W3 T; Z) H4 Y% U
  12. int main() {- Z1 F5 p6 u% b( E: q  H# W( k
  13.         int sockSrv;6 w9 Z( N. e9 z+ _
  14.         struct sockaddr_in addrSrv;$ R) u- p* T6 H1 M# ?/ n
  15.         int len;/ a: L9 x( {; V7 ]& k4 x& _" r
  16.         char recvBuf[100];
    6 z* Q1 S7 ]  T5 T* v( U" n
  17.         scanf("%s",recvBuf);
    & A2 _; ^5 ^! r& h6 d- |
  18.         struct sockaddr_in addrClient;" G1 N9 X) M3 w  S' u: u3 l
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    " k. y/ G4 K0 p! Z+ ~0 |" f
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);" }" I* w5 k* t5 A2 z8 u& y5 G
  21.         addrSrv.sin_family = AF_INET;, |) f: `! o! g# u' ]
  22.         addrSrv.sin_port = htons(6000);$ r4 J: K. i/ e2 ~7 N0 Y, O# `5 z
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));/ g% r) U' f  Q) g
  24.         len = sizeof(struct sockaddr);
      Z1 m; b- j+ ^8 u* E- _* O5 P0 d
  25.         memset(recvBuf, 0, 100);7 `" z  U1 N6 f) f: A2 N$ V7 n
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);/ s% N! w( w) M2 O
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    1 E1 E) j1 S' G4 F' T$ v9 M
  28.         printf("Client data is:%s\n",recvBuf);
    1 @! s% Y# J( k: T$ H
  29.         close(sockSrv);
      q9 p% d- W+ |' ^& q4 u
  30.         return 0;# f+ {& T- u' n- X
  31. } 
复制代码
# v7 j: x4 J8 k# C3 |8 W* e  @2 {
. d- F- o4 {" o; H! ~/ E9 G! P
7 u& K" `7 \0 R; b! h
* d7 L  N4 G  Z: Q# s
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-19 23:59 , Processed in 0.063351 second(s), 19 queries .

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