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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:7 X6 L, z% ^9 n
  1. #include
    - z7 V0 r1 N/ j! @  x) `
  2. #include
    , i; @& G& u/ m, b
  3. #include
    % W2 ?$ W+ d8 {: _3 Z, Y# A% r
  4. #include5 _6 W/ l! o3 T$ G
  5. #include, |0 z. N1 y* C! A5 X
  6. #include
    6 h& {& b" v; u. [# ~4 a+ m
  7. #include
    8 Y4 A* u9 {: H7 Y4 \
  8. #include
复制代码
  x0 l1 s: a) m

( n3 H# J% }  q服务器代码如下:8 m8 \/ C3 A' h* [' n% D& V, ~
  1. #include! x' G! u" p9 ?
  2. #include
    * s) G& |' }( s. X8 e, q( U% R3 O
  3. #include- ]0 [4 o' _( `# b% _. m: J9 r
  4. #include8 R3 O5 ]; E3 W" C' B9 d
  5. #include
    ' Y3 t3 U, N6 B
  6. #include
    # P" \4 _' t' k# T9 `
  7. #include
    ' ?  t) e/ S+ f9 ~' Q' P' A
  8. #include
复制代码

5 F1 V. o# u6 q, K# Z9 Y  U# l8 x1 @) _

6 s% g4 D2 k- b0 z# o1 J+ x& ?
, D  D& `( v* O0 v: w& d5 s# ^

: X7 u. d; `1 g; F8 g
  f3 U: I) e# P) q2 s  H
, `9 S# x  ^9 M# i
2 @( |: N3 |2 m  x0 k; z1 W
; D- A+ d- U4 @/ C' N) Y: U
( x, R: V* H8 t5 }0 v- F
. I2 Q# I% |& o7 ~" s9 N
# v9 ~5 i1 u# c/ e; a  E

, h1 ^% n# z' E) x

; |$ h: ]) l; ~+ L) q* m
$ J1 o8 g1 M+ A9 }  J* O

% J9 o: \! I7 j9 K" Z
* O& B0 S, B" Z8 o6 ?

( Y, s( R. {" ]# S1 O8 X
; M: D5 [2 M/ K2 _
; @$ Q2 s$ ~, T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
- N- ]( Q) g1 v# N& j- _- b, o#include <sys/types.h> 
3 m& S3 A+ Z( e( G" R% s( O( _#include <sys/socket.h> , Z0 U% U8 T$ `0 J, _& @2 H9 f
#include <unistd.h> 7 z. ?% i2 a' h) M' N
#include <netinet/in.h> 
  N/ \* a- n. E/ R7 g6 Z#include <arpa/inet.h> 
" L; ]2 [# Y" \" ]/ Z( Q#include <string.h> ! H1 h7 }& r2 Q5 _8 h
#include <stdio.h>  
6 N+ a- }, b+ _* sint main() {0 N0 J  V; B( P: X6 r* n; C* k
        int sockClient;
6 a* s1 P& {) s2 j        struct sockaddr_in addrSrv;
; W( a$ G# d2 T' h# q        sockClient = socket(AF_INET,SOCK_DGRAM,0);9 Y2 P+ v* H, l5 e- ]- V  F
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
' j& `8 L3 L8 Q0 O9 I        addrSrv.sin_family=AF_INET;1 f5 a; U' ~6 @" F1 g) P( M( X
        addrSrv.sin_port=htons(6000);
( {2 |# S* K2 b9 P        while(1)
) S) G3 b$ w- k5 n- y. e- ?% \1 ?        {; ~& W2 Y' D, i8 |" ?2 F2 N
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
0 ~( S1 C2 N8 f1 _% ]! Y- {                sleep(2);
. k; F& \6 M3 f/ m1 |# y        }    / i1 b0 k* L8 Q$ d+ b) h* i. x
        close(sockClient);  
, Y$ U1 t* q# q' v* X7 Z        return 0; 2 e/ ]/ z0 z5 W6 f8 ~2 }+ W
}& Y* }" x: \8 p; n* i/ V/ J$ m% ^

* g$ c5 b4 o. G6 G1 Y
- G+ X7 D. h% q客户端:
  1. #include <stdio.h> 
    4 C  c5 K0 c5 b0 ?: P) v5 B$ W
  2. #include <sys/types.h> 
    * s- U/ S- z8 @4 t8 ~/ a  T
  3. #include <sys/socket.h> : ^# M" S/ [2 B  j( ?
  4. #include <netinet/in.h> 2 @8 Q$ |# C9 g& R5 s5 [7 R; P" l
  5. #include <arpa/inet.h> 7 W; A( E! ~& \' Y4 G, f; p
  6. #include <string.h> 
    ; C4 u' [8 G1 b5 D+ K8 Z
  7. #include <unistd.h> 
    # l- @0 x. \7 Q: B  F  E" W
  8. #include <fcntl.h> , e* R0 [1 @# w0 Q' o  Q
  9. #include <sys/time.h> 8 h9 [6 b2 l4 o! a& @9 H# u6 ?
  10. #include <sys/select.h> 6 ~, M$ U# r% `+ {0 q
  11. #include <sys/ioctl.h>  
    5 C9 Y, |7 X+ w" a
  12. int main() {: i% f  l; h) D( H" A
  13.         int sockSrv;% \) g1 v# X7 G7 F, \
  14.         struct sockaddr_in addrSrv;
    . P, {4 w0 P( w
  15.         int len;
    - A7 i' }: @+ f3 X- B- J$ A, ^
  16.         char recvBuf[100];
    , O* T) m2 e8 m7 i0 v; Q+ I' @
  17.         scanf("%s",recvBuf);- r+ H8 ~: n, |2 {$ L
  18.         struct sockaddr_in addrClient;0 P- G9 Q2 J$ H, e% `
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);3 J9 s% K/ l! g4 I
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);- X9 K5 p# |1 N6 v% M9 l- w# C
  21.         addrSrv.sin_family = AF_INET;5 H, d/ e% @9 I( n
  22.         addrSrv.sin_port = htons(6000);
    9 e1 ]- }* Q9 O1 r- B+ |# z
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    5 A7 p% @  h* G- Q" ~
  24.         len = sizeof(struct sockaddr);7 ^+ ]0 c+ p% K3 W) Z% z
  25.         memset(recvBuf, 0, 100);
    3 i) W& ^( h8 }/ X
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    . d8 e; n, b0 r8 d$ t
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));3 [, e; m3 t4 N- A6 f1 I# {
  28.         printf("Client data is:%s\n",recvBuf);
      a* }8 F  }+ o
  29.         close(sockSrv);5 Q3 p' d  h: U$ c' u
  30.         return 0;2 n% F1 K) u( s
  31. } 
复制代码
! o5 m0 P' x; W6 a3 J  T% v9 A5 ?

+ d& R, v# y! C6 U+ x& _" s, b- x
/ ?8 P/ w' q7 _% m! E5 N
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-4 09:34 , Processed in 0.051594 second(s), 18 queries .

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