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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:& S( ]' h: O- ]+ A5 A8 O
  1. #include
    ' V7 |  [# Z0 w1 Y% z4 Q9 c. d
  2. #include# _8 U& j8 X+ }6 F
  3. #include
    1 D( [, G8 ~2 v! I0 q
  4. #include4 V1 C; [; g) [, \, K
  5. #include
    8 X. \1 o' _7 [$ Q8 O- J5 Q; U- N
  6. #include! b* ]6 T/ w4 T, l& I; h
  7. #include
    1 t: _6 x$ Y+ q9 D" l
  8. #include
复制代码
' p) |0 k9 J3 C/ E- x8 H

( P4 ^$ h. r  j, J$ C2 X: \服务器代码如下:4 U( h9 _4 d* G$ x; D2 m7 }
  1. #include
    : L; A1 H1 U2 Z3 D' \2 t: x5 u
  2. #include
    . o) j, b# Z; @/ q$ m: d- J8 E
  3. #include# `2 n" }/ W7 _8 g; C' p( S
  4. #include% S3 z+ s7 B  u
  5. #include+ Q$ y! W1 b  k- M/ M5 a
  6. #include6 ]3 b% w; e8 q5 b% k2 j! o
  7. #include
    % v, h: z5 N) H; D; d8 Z! b
  8. #include
复制代码
; e9 H6 J& F$ ]+ d
6 n! L$ J- |+ i

, L' S1 M( j# a
. Z) Q$ f& N2 ^  q  W& E7 e8 E
5 h6 s) |1 H- g4 @+ r3 W; |' g

0 o( b/ h7 V, S* ^6 z4 C' g( c5 U% ~' X" `" s7 ^
1 P. I: W) y& i: U; ~* Z

5 W! \# c7 ~8 W2 \; b

, ]' W# Z! M7 V/ e1 h# R/ y
4 m. _8 H. _# Y' i) G7 s9 Y
  |- Y* g; M6 n6 _( }
9 m0 O$ p1 g% e* L

/ B2 }( f" U4 E; R3 a, v
# S8 T; _- G$ t! i  [* D. R8 z

3 s, i. }* @2 X0 X  D* a" {" J" q+ |: B' f

* a4 ~9 p; z( R. h$ S! X/ h& e, [5 {1 J' `. ^, O3 Y

$ P* ?/ [3 k8 j# r+ u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
+ `5 T, A* \+ [5 `#include <sys/types.h> 
4 h6 ~+ i" _1 ~7 |/ j; T2 ]% ~9 O#include <sys/socket.h> 
# O( V; N; A& m3 A0 i/ ]#include <unistd.h> ) Z1 n. [2 d$ S' i1 B( X
#include <netinet/in.h> # ~* {1 J/ V% y2 V- K" a6 W
#include <arpa/inet.h> , f4 h- Z7 q% g8 L/ m
#include <string.h> 
( `0 ?8 _+ Z' s5 m#include <stdio.h>  - j/ U# v7 V- k& Q
int main() {, B6 T0 C$ n, [
        int sockClient;6 o. d1 I$ d) ~& @0 K! F4 k( ]5 u
        struct sockaddr_in addrSrv;
2 U$ d3 \9 O- N6 v" y( S& p' |) ~        sockClient = socket(AF_INET,SOCK_DGRAM,0);. [4 h0 L5 L2 P5 B$ R& L/ Q0 o' e4 l
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
( d5 }' a2 @$ T" h) K+ O        addrSrv.sin_family=AF_INET;  Z: g3 r  T5 r0 ]
        addrSrv.sin_port=htons(6000);
) p: p8 h  a2 c7 i4 O# ^        while(1)
* ~6 X$ c. C$ d; q        {
; Z  ^9 J1 T" B( a1 E7 H7 Y                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));  h: {& Y- y9 h8 ~3 r
                sleep(2);
: e6 w/ ^8 x3 G: i$ \# R        }    
8 J5 C# B# \, |- c( J        close(sockClient);  
9 n+ u) z6 V$ @; U( u9 U( |        return 0; 0 b% W5 S) U9 A3 l1 q
}
" `0 g/ s  ]+ ~: X+ ]! z3 Z4 _- @& q  @2 I: i" Y% n0 z

2 V3 m4 D/ d+ c+ B0 u客户端:
  1. #include <stdio.h> 7 s2 S& N+ S3 [  B- B
  2. #include <sys/types.h> 
    2 I8 k6 d4 I  r% W
  3. #include <sys/socket.h> 5 u* S: X: L' O& Q! E) B' C3 M, z
  4. #include <netinet/in.h> ' Y' h: n4 O5 D. C# {( m) X+ M  q- n
  5. #include <arpa/inet.h> 6 O( u: o/ r  \2 D2 |/ ?& R
  6. #include <string.h> ; [; E, N1 Q2 H& c
  7. #include <unistd.h> + x2 Q( x$ |% Y: g6 ?+ m
  8. #include <fcntl.h> * R5 o! d" W' R! Y5 B$ \
  9. #include <sys/time.h> 
    % C9 U: b9 k$ m0 F5 f  L( z
  10. #include <sys/select.h> 6 _+ F+ O- t: c, H4 N9 V7 x
  11. #include <sys/ioctl.h>  2 B' i/ y' p% C5 C6 |2 Y
  12. int main() {3 ~0 X. p4 K# J0 v, c0 e
  13.         int sockSrv;4 D, p" V0 S% I
  14.         struct sockaddr_in addrSrv;: n+ Q4 d. `9 C) F& R
  15.         int len;
    6 n& x* \& h* u) z6 n+ S: i8 _
  16.         char recvBuf[100];
    0 C7 B4 E5 m4 A: E+ |+ p8 r9 |
  17.         scanf("%s",recvBuf);
    " w9 D: V: f, F5 z% r: H
  18.         struct sockaddr_in addrClient;. p* v9 D! v- v4 c$ k6 j
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);& \; d( y" O6 G5 U7 R  Q
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    9 h/ {+ c3 c7 A  K
  21.         addrSrv.sin_family = AF_INET;
    , _+ K& A' W- r/ U4 h$ n+ z
  22.         addrSrv.sin_port = htons(6000);
    % V4 K$ ~% U9 x$ y4 p
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));/ |+ x- |8 T. ]# K9 v# F( n) \
  24.         len = sizeof(struct sockaddr);
    . y2 p' Y) n3 Y, o- z) t) n
  25.         memset(recvBuf, 0, 100);
    9 ~/ b; _3 t$ r, X2 |2 T
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);: F* @) G8 b4 G. z  w
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    5 F" |7 _1 B1 N! I1 G
  28.         printf("Client data is:%s\n",recvBuf);, @$ o/ k# N+ C0 A4 w: r; D
  29.         close(sockSrv);! }/ K' i* b! h  u7 E8 |/ A
  30.         return 0;
    ; @+ B% D* b4 L+ A1 L
  31. } 
复制代码
) q. T+ K& j2 j

$ y  G, }9 a) z( r
1 a& y0 O) }6 f# a, N: r" C! E4 C( ?+ k/ |' H8 c
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 15:16 , Processed in 0.105513 second(s), 20 queries .

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