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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:2 t: a% _7 A* b, d* n
  1. #include4 J+ x) k3 R+ c0 d# @
  2. #include/ h+ q4 D, K/ d2 {
  3. #include+ ]) n7 V6 O1 |. [  L+ c6 p. ]
  4. #include7 C& S! O$ U6 }7 x+ _7 N, Y- L0 I, h
  5. #include8 W. _9 u$ T! _9 I* k& e
  6. #include
    8 }% s1 m2 @" J* J; ]6 ^
  7. #include, [' G  f; ]* m2 v4 I8 X: M! k4 I
  8. #include
复制代码

7 f, Y) S/ A4 v5 N# h& ?/ o0 W4 o' g) A. z
服务器代码如下:# P6 D  n/ X& B$ }
  1. #include; {* v" n' L% H' W
  2. #include
    # B5 F; t5 Q) n9 w8 m9 K
  3. #include4 f6 E1 Z; V" F' Z0 X+ w+ I
  4. #include
    9 |+ h* ]' }$ G) T
  5. #include
    9 N) Q1 b1 L6 S; s" A
  6. #include
    + x5 d/ _' L+ h4 F$ K
  7. #include
    - ]# G5 y0 M' P; ]
  8. #include
复制代码

4 H! l$ h+ t' J/ w  T
' l% e: V% j: R% U6 s1 x2 S) T" A" w* e# X; L

6 E2 @2 G! f2 w8 u, I  o
2 K; q. V+ Q% K9 u

( X5 g$ A5 x+ D% d! e
0 n% d% F+ G- l- F( z

# l. H9 N! C& O* {+ H" @5 X0 R, g
0 a1 p: N0 `1 D  C

. K9 o8 y" n9 R% {3 r% U# S

; D1 A- b5 [* q, g
, h8 v! {2 W8 X

$ q. M# t+ ]1 t: N& }5 v  ^* l+ t3 h: ^) h9 S. Z  W' d0 o5 D
% v* v3 V8 G' d5 x3 I) L+ O1 a

: D: Q- M% e/ G! g) Q  F
" V7 p. O* S+ p" \- v: f5 K

( P/ U! l8 Z' D, S8 l# P

! {$ S: [) U; n) n6 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:2 ^# L. f' `+ i6 g) p" E" S
#include <sys/types.h> 
0 D- I* A$ J+ S, V! D5 P. M& A, x#include <sys/socket.h> ) M+ f% W( E! d- z: ~
#include <unistd.h> 
' r" D2 D* y+ Q* A* m#include <netinet/in.h> 
( U' U" A7 z( _, K) b" d5 W#include <arpa/inet.h> 
# A. y9 i* O/ Z' M- O: h#include <string.h> 
9 f- A. r+ E( X% d#include <stdio.h>  ' F* y: [# c$ h. K: O5 ~/ n
int main() {1 _1 K, x! j- x6 p
        int sockClient;
0 Z9 q$ e( x, r! _. i1 Y0 G, m        struct sockaddr_in addrSrv;( q$ b" y2 w" I; q9 E% H  F& @( |
        sockClient = socket(AF_INET,SOCK_DGRAM,0);+ C1 o8 @+ z/ U1 F% `# z
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");# g* r9 X7 }+ ^0 a9 I
        addrSrv.sin_family=AF_INET;
$ T) t; _5 D9 w6 C* ?8 {        addrSrv.sin_port=htons(6000);' {& Z( d0 g( G, f
        while(1)# |3 R  B/ j% {2 b1 P
        {: U; `4 g; ^( `! j; y/ P
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
" \+ [$ [/ Y$ z                sleep(2);2 p# l2 g3 r5 R* H: z( x+ ^
        }    
0 M* C7 f% W! n* C% z. E8 w        close(sockClient);  
/ t5 |8 d1 V: G  }) T$ a8 X% _        return 0; 
' R1 y  J. m  q( J0 o* Z; L}
, c" z$ i8 J6 b$ U* _3 W# j$ X; H. D0 @$ v+ p6 `& K

+ L2 X1 r' }+ X* Q8 N/ i: y客户端:
  1. #include <stdio.h> 6 ^+ K9 p( L, i" N& a6 N1 `
  2. #include <sys/types.h> 
    - _! F3 a0 m2 V
  3. #include <sys/socket.h> 
    , ?2 Q* ]5 [5 c! L4 Y( G; h# c( [0 c
  4. #include <netinet/in.h> $ x+ b1 a% g% ]1 K2 Z, M0 _
  5. #include <arpa/inet.h> 
    * X6 I& n5 f7 q' |
  6. #include <string.h> : N/ e4 Z. \- K4 |
  7. #include <unistd.h> 6 d) W0 V+ b. ^& ~2 ^
  8. #include <fcntl.h> 7 t" k8 G( S0 n5 e* k* H% F
  9. #include <sys/time.h> 
    - g4 z+ d7 H7 e4 v
  10. #include <sys/select.h> 4 P0 Z- U7 f' \2 a" _: g2 u8 Y% ^
  11. #include <sys/ioctl.h>  
      \% B. Q! k" d/ k, v" G4 _3 }" g1 F
  12. int main() {
    ) s- S- m" p9 w" W
  13.         int sockSrv;
    ' C1 l9 p' R+ e% p- p( \' D
  14.         struct sockaddr_in addrSrv;4 G) R% L& V2 X3 i. E3 C7 U2 {9 j
  15.         int len;5 @, V8 s) k; `" L8 C$ R& L( _
  16.         char recvBuf[100];% r  O6 D, i4 P+ b3 \# B' W2 v
  17.         scanf("%s",recvBuf);- p: u0 b$ s* P* G& p
  18.         struct sockaddr_in addrClient;" s( {, \5 |, a8 m- \, e$ S
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);5 w1 m7 G6 ]4 A8 I- `
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    1 s8 `- b) U1 R" `: B8 Y( b
  21.         addrSrv.sin_family = AF_INET;
    + c  h, `9 z+ a( e
  22.         addrSrv.sin_port = htons(6000);0 e# ?5 j$ ^& |  z+ p) g) C
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));, b: d0 n8 _7 A
  24.         len = sizeof(struct sockaddr);, p+ B" y" ^0 C+ U9 G' W
  25.         memset(recvBuf, 0, 100);/ F2 N1 W- Z6 M5 k/ c: D5 r
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);$ D! B% q) z: ^) k
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    " A- p0 V; ^' K2 W% I
  28.         printf("Client data is:%s\n",recvBuf);
    + b/ I. R' _/ C2 H8 {5 }: u) d
  29.         close(sockSrv);
    4 @( `6 W0 o) [9 G3 s
  30.         return 0;0 a( z( F+ j$ x( y! d
  31. } 
复制代码
9 M) x3 r' x) g& A3 v7 E, Q

+ d& h4 ]5 S0 {. Y" [7 l  J0 k
: a( b' f8 o% i2 K
  s) ]- T1 g$ ?% M& u4 c2 ]) f
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-4 10:04 , Processed in 0.052747 second(s), 18 queries .

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