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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
) w. E3 I5 r7 D. X9 d& r* p
  1. #include' A: C9 {2 d% o  V( H. J- U" B
  2. #include
    2 u& s7 v( V) _- S
  3. #include
    $ Y) ?- x/ |: ?% P" D$ L4 t
  4. #include2 |6 q+ Y) j7 r. F
  5. #include* z# \( ~) c. _- o. L
  6. #include
    / M8 H, T6 w( E% _4 [+ u8 Z
  7. #include
    " o% Y! w) ^& w5 B7 J" }) W
  8. #include
复制代码

5 t5 M: X' K* {( I
8 p3 Q7 D1 p8 W& ^5 [2 P5 w服务器代码如下:8 ]7 a( f+ G2 a5 ~6 S. ^% B
  1. #include3 n. `9 U: G' ]/ _: t; F6 V
  2. #include1 z( `6 M5 z  g/ m) |
  3. #include
    . ~) b( m' o0 F- w
  4. #include, I  V1 u# u- u9 j
  5. #include
    8 E' G# g, ^' s' ^
  6. #include
    / z8 ]  d) A1 ~2 O% z6 d# @
  7. #include
    ' \, x% c4 o7 e* @9 R7 z
  8. #include
复制代码

& K# b4 s+ r1 a$ v" U: r1 A! |/ @! x, }
. I0 e; {. w: G% [: F* K0 o& {  d
2 {/ S# D  B/ [) {
  y3 e. o; j" R( e( x' K

4 F) |* w& ^9 Z% _2 a" _
5 ~3 n) q# I: s' s* c
/ F, B/ c+ ]5 K: ^2 m
5 N5 F. S& Y( U$ x- h  ^

3 P% ^& v/ S% ?- ^; D( z7 q
- S( e; l- A* x! W4 L( A: a
" |4 G6 M6 x& r$ m3 z

. N/ X" a# N9 s0 u5 I% e+ h6 E2 w) }
+ j2 u6 p! K( |1 C0 d3 Z/ J
$ l0 a( B8 D6 B7 n4 \
, Q6 M! |) q5 x
* R' R; Z  h. e0 Y7 s9 z  O! ?

! F6 v1 o! w9 y: x) L  q. U8 E, [& S" G0 _

- u2 n! b, l+ ]9 v! Z7 J6 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:0 W& f$ Z, P3 Q
#include <sys/types.h> ' y% o0 j' ]$ I6 F: }. E
#include <sys/socket.h> 5 t& q, Z& m  s% [! p+ T
#include <unistd.h> 2 ^4 P/ O; u" N1 |9 [4 a( s, B3 w2 F
#include <netinet/in.h> 
% L0 K, E$ [4 L% D  Q#include <arpa/inet.h> * ~7 D1 Y+ Z  y) m9 q$ K( b
#include <string.h> 2 e& ], ]3 m4 F0 v* w( g+ L
#include <stdio.h>  6 p" l% f4 Z. s3 v
int main() {
; M3 Q6 L- ~: ]$ [        int sockClient;
6 T6 k$ l2 v* h9 r5 ~        struct sockaddr_in addrSrv;
9 \# D% R( V/ L, Z# H8 Q% y; ]        sockClient = socket(AF_INET,SOCK_DGRAM,0);& r5 X. C. b4 m( c
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
3 p! o# v1 h+ y, t2 v+ ~        addrSrv.sin_family=AF_INET;% T) ~; j* C9 \: Q5 @$ t
        addrSrv.sin_port=htons(6000);- K8 `6 U7 }& G, |7 s; W; F
        while(1)& t- Q! Q+ m! c+ h% }$ q; {1 v
        {
0 S) J+ N  S; J: F* |! }" t                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
3 O" I% o- \( f5 \                sleep(2);
  ]9 D! F8 o- n        }    
  g5 L( _# I6 Z/ l        close(sockClient);  ( B- N0 J0 o; p. j
        return 0; 8 O* M8 ?) z4 y! v9 D/ N8 c
}, H, z9 p2 m1 i- B  u( j& a( k. y
/ u4 H# Z* }. N+ m
; `4 s8 D) F$ u
客户端:
  1. #include <stdio.h> 2 Z* o) z8 M- S5 c
  2. #include <sys/types.h> % R5 @0 ~- I& ]6 p$ K$ A" l
  3. #include <sys/socket.h> 
    ! C' y. |( k" ~) |' X
  4. #include <netinet/in.h> ) Z( J5 ?/ A; X$ z- T# _
  5. #include <arpa/inet.h> 6 L. L: B6 y* |% N: {
  6. #include <string.h> 3 Y8 ^) j( L- B
  7. #include <unistd.h> 3 A0 b1 n# Y8 R- z
  8. #include <fcntl.h> ) `1 S7 _/ h  O. O
  9. #include <sys/time.h> 
    : S# F) h$ A! |, S, Y
  10. #include <sys/select.h> 
    . A9 Q3 N$ f" Y* z& {! S4 U
  11. #include <sys/ioctl.h>  
    , J  @( {, T8 Y  D# R, d
  12. int main() {
    ' e% P( x: T5 D5 _! [
  13.         int sockSrv;
    ) \# z* W  f& P8 @
  14.         struct sockaddr_in addrSrv;3 R: G) X: B0 m8 |+ c
  15.         int len;+ S; y  I0 l7 G7 w
  16.         char recvBuf[100];
    $ ]' I6 a; ?0 x. N0 F. V# r
  17.         scanf("%s",recvBuf);4 b; ]' V$ f( I0 n$ A: K  T
  18.         struct sockaddr_in addrClient;' R5 b/ \. H: g, u
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    5 L" I  f/ b4 j
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);, j8 K' \3 P: o. w- [4 Z0 e
  21.         addrSrv.sin_family = AF_INET;7 I0 m8 X+ X1 T! i& X3 m
  22.         addrSrv.sin_port = htons(6000);
    7 ~9 C( E( f5 W+ v0 T
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));2 k) R% E" P5 T! P* n
  24.         len = sizeof(struct sockaddr);
      C+ N+ y/ o( X+ l* f5 B
  25.         memset(recvBuf, 0, 100);
    0 B' p% i- v; Z. a0 e8 q" e
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);) u# Q. U+ Z2 F$ E6 w! ~. r
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    ! @4 k7 `/ t+ H
  28.         printf("Client data is:%s\n",recvBuf);
    * o9 T, k; V) e0 C( H
  29.         close(sockSrv);6 |% G0 N$ v' \5 i
  30.         return 0;+ j- r* F) k- P# V- j
  31. } 
复制代码

* N! x* g8 P; h/ z; r" t% u: g! m# |, M, M! g( e

; b( H: [4 z4 a1 a8 Y! ~4 {; m8 Z  e7 r6 d( W$ m" `
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 07:03 , Processed in 0.101198 second(s), 18 queries .

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