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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:1 h! n7 A' g" v, [
  1. #include
    $ _: }' V/ {: v) }9 p3 ^
  2. #include; I# D7 N1 e; k
  3. #include
    , Y3 l, u1 l- |1 f2 ]8 W6 @* G$ _
  4. #include
    , k# q0 a8 I" A  P
  5. #include
    2 s1 X5 o5 W+ f; Z
  6. #include$ x% A5 ?# J- m1 \. O" p/ [
  7. #include
    ) g( c  R8 L9 M8 j4 m
  8. #include
复制代码
1 q" C& e1 y3 q" x2 Q8 u2 Z
% H0 u6 q" V6 i4 Q* H7 N1 k
服务器代码如下:# _2 x2 w7 Y5 }  R
  1. #include
    , H) a/ v' w* o4 ^& t
  2. #include
    ; p% U; I' Y. U4 t5 G# d# d0 |
  3. #include
    / _% G0 V5 w" F: d. F6 n; l
  4. #include. V+ G2 I$ X: H7 V# n# ?" Q; ]
  5. #include  z" r4 C! w9 x2 g) \: o
  6. #include  ?/ L' s5 B* X* y$ V
  7. #include* k1 F; |- O7 U
  8. #include
复制代码

) k4 g+ R& X- N) J
6 M2 U+ W, J/ ~# i* s* O+ B% H3 N% t/ C3 W1 T) n% B, l
: z  j5 W0 m( [/ W3 [! T) V

, y; \5 Z/ D+ t
7 @- Y7 Y% I; F* e
+ G) B& j/ v$ n& `2 Z' y
; F/ T4 F* K4 t7 y2 ~3 J0 S! m
  ~. l# T6 e! t9 ]. \. ~: T8 D- v
2 @6 b5 F$ @$ \8 y. _, P: r7 `

* a/ f1 z5 O0 T; ]6 ~  e+ y; e
  L$ b+ V+ L2 t3 N% J$ t) Z; [% V

4 l1 n/ ?5 y" O! _% b8 E
5 v7 [: x. _% U) q
& S: G2 S9 t( S7 k, O! Y
6 X  V/ n' k: h$ `5 n# I+ w- r

5 I" `8 `" H9 t* q  z$ _, [! t2 d
2 H9 ~( }1 p" y+ x

3 t' o0 k0 z' ]+ n7 R: M4 h. a3 f

' ~! N8 A: E, f% ?) {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
& h& g, I! o  m* m#include <sys/types.h> 
* `& s: s9 p5 n' C, r$ r#include <sys/socket.h> 6 n& F3 b- n  q9 J: o' A8 A. M
#include <unistd.h> 1 n. @( i4 a5 v' O" t
#include <netinet/in.h> 
- Y5 d2 k" }& M; \#include <arpa/inet.h> 0 ^, A6 l* I6 P5 `& W
#include <string.h> 
. l  k1 f6 D7 B6 n" X#include <stdio.h>  + f. c0 o$ h6 ^- j! Z
int main() {
6 ~" ~5 |) c- k1 C3 v        int sockClient;
8 l4 [6 }- }  W: t        struct sockaddr_in addrSrv;# ~0 F# B+ D5 W3 y& ^
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
& G9 O/ i# R' E1 n, B        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
, H$ L9 u3 P" \0 Z5 @3 L* t% p        addrSrv.sin_family=AF_INET;
' \. k+ W5 D* G! t8 E        addrSrv.sin_port=htons(6000);
0 E' t* `4 F) @/ ~' X        while(1)
! U/ [, i4 }* y; A        {
- _( H8 [& s  {                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
) c& b- ~9 u% W2 V                sleep(2);
  {. g1 y7 N5 P# ?6 s0 }# j        }    ; |  Z+ h/ B) Q; ]9 A. Z/ {3 [
        close(sockClient);  
- o2 \. w9 |9 K) p9 F        return 0; : B1 s' p4 i2 Q8 x
}6 Q: @/ U7 @& r/ E) h6 g( a

) |! }3 U4 O* C3 U
7 X2 |8 U: p# n  o客户端:
  1. #include <stdio.h> 6 c, H8 q" v% Y7 |7 b, O
  2. #include <sys/types.h> 
    9 P4 A4 \6 i. S& _# F" n& v, Y* e( b
  3. #include <sys/socket.h> . K1 b% E& m3 k; b
  4. #include <netinet/in.h> 2 x$ z) _: f2 Y+ n
  5. #include <arpa/inet.h> 
    0 |2 I. \' U1 f
  6. #include <string.h> 9 r9 W4 P# Z4 ]! y  f
  7. #include <unistd.h> 
    9 x0 B4 g+ e# x7 o1 Q
  8. #include <fcntl.h> 
    0 ^* F; h( X: z4 D+ W& [
  9. #include <sys/time.h> 
    / X, z8 W4 k9 o# `8 E" \" P. F
  10. #include <sys/select.h> 
    1 F) E" Y3 B$ J$ a8 R
  11. #include <sys/ioctl.h>  
    1 b9 {4 ?8 z/ o7 |' ~! w
  12. int main() {. N) `4 }6 {# A
  13.         int sockSrv;+ L8 _7 \* a2 \+ k/ D) s
  14.         struct sockaddr_in addrSrv;
    4 ]) D+ @7 v. B' U  J
  15.         int len;" v; p* w4 ^) V  ]( C7 s  l
  16.         char recvBuf[100];% g3 {6 V8 D4 v1 N( V1 S7 ]0 [
  17.         scanf("%s",recvBuf);% G- z9 k( m& k" h6 A# p7 @
  18.         struct sockaddr_in addrClient;! b; i6 r' y5 e% X. |! @
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    - u- ]* |$ t. }8 x& c
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    4 r% \5 d1 M' T4 {
  21.         addrSrv.sin_family = AF_INET;" r( f5 |: f8 w! y" K8 C6 O* O
  22.         addrSrv.sin_port = htons(6000);, q; N, S5 k/ p4 W# e
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));: e/ v6 D. d# h+ m7 t
  24.         len = sizeof(struct sockaddr);% @  y& E0 ]' G) T* d3 Z- B+ o
  25.         memset(recvBuf, 0, 100);
    9 H. p4 e; [( d- L9 _7 v
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);# Y. b3 R  J# I
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));0 @% b) O' @+ B
  28.         printf("Client data is:%s\n",recvBuf);% N2 T; w$ f, s+ n8 G
  29.         close(sockSrv);
    ' u8 F! ^. A- Z. R4 E
  30.         return 0;
    , C5 _7 F6 u- r6 q- x' Z8 L
  31. } 
复制代码
* I+ L# T6 l' K7 n+ w' U
5 p  I# N2 N* Y) `6 v7 ?& F

+ s; R2 d- y5 f! ~9 v
+ H' Q9 f, j9 f; Z: I9 o2 p2 }* X( c
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-9-28 09:30 , Processed in 0.114616 second(s), 21 queries .

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