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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
5 `! h4 d  ^9 E. s4 p
  1. #include
    5 d4 ^. P) S7 [* F
  2. #include
    2 f$ d/ K5 v7 t
  3. #include2 n2 v, |: P8 S
  4. #include
    ! [1 o0 G: Y+ k3 Z
  5. #include3 e0 r  U5 A1 J1 X
  6. #include# |  g7 `+ k  U2 n+ C5 a$ h
  7. #include
    - N" A6 I+ ~0 w+ p  `3 d
  8. #include
复制代码

- a# l/ J, a; y9 }, a
0 u3 e5 n% {! h服务器代码如下:
" f8 E( d% q- D  r  S. a
  1. #include
    ! I2 X0 D3 P3 {1 B, [" e
  2. #include
    ! _8 K  K- s) i8 s; J( e% v
  3. #include2 t9 `$ r" G! \- l  A3 b& o
  4. #include" m, @5 F( z3 ^1 H& m8 d0 v
  5. #include
    : q4 n! s% ~2 X9 G
  6. #include
    * ^: q3 @/ K' C" N
  7. #include
    $ p, G2 t0 L4 J) N7 e- F1 R1 t
  8. #include
复制代码

, r: I; Q% M0 W7 H8 e& B6 F; D5 [/ p

' c% f, b' ^# Y# U

. ~0 }) S8 l- D) q% I, j( J8 F4 K$ e* `

/ f1 j$ `- t' L) R& P. ~/ [4 c8 f3 c! v' b9 W$ W

; }* X( d' y; a5 c2 V7 m
* z- b- P& [$ f, w& ~# j' `

% O* k' X8 L; j& K* @7 a
0 l4 J" Z# C! [
5 J9 O, N4 t" w7 q/ Z

1 w1 p& B/ T8 }; ?9 V( o2 p. x( Y
; I. z& ?0 B" F9 K& p( n, \
3 Y; k+ K# z  x
6 Y5 P8 j) \. w* }4 G8 F0 A

% Q% k; B% ?/ L' \4 ~

0 ?/ r3 R6 N6 n0 C# _; n; s" r% n/ Y

& [5 y9 d( r! U; K4 T! q3 G( p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
) T+ X; o$ i5 Y6 v' [0 ^#include <sys/types.h> , k& I$ y! S4 A/ F& h2 u4 w
#include <sys/socket.h> 0 U4 Z, B4 F+ \$ }) d- {
#include <unistd.h> 
+ l$ h! A4 ]+ X4 L4 {3 q7 S$ ?5 u/ k2 a#include <netinet/in.h> 4 e. k3 }' {  ~$ `) E+ ?
#include <arpa/inet.h> % ~. a0 I* G" W- O
#include <string.h> 
% w' z3 \4 E' B4 n#include <stdio.h>  
! k' @9 K: a+ u" ?( U6 V  \5 T9 G" Zint main() {
2 b  K2 ^* o9 h        int sockClient;! H6 n7 |5 U; e, T+ S9 v2 }
        struct sockaddr_in addrSrv;
4 \" X3 w" O6 k$ b( Y        sockClient = socket(AF_INET,SOCK_DGRAM,0);
! F& g8 C5 m2 p; v        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
6 O: i, c& y0 s2 d  h0 C! ~& p        addrSrv.sin_family=AF_INET;' G  S+ [, A- ?, l, ?# o" y! F
        addrSrv.sin_port=htons(6000);, }5 Z" n4 I* t! P' F# |4 G7 |  v! r
        while(1)  i: ^2 w' C. \) j+ x- W4 g
        {; b4 U4 ]% i9 j, t# T, _) N
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
' d2 D8 ~5 N/ `  `* v$ o                sleep(2);7 G9 m( p& }% X# T
        }    ! Z( V- J5 K5 @% E7 Z% |) B! x# M
        close(sockClient);  9 K  D) Y" J* ^5 Z
        return 0; 
: t3 x5 a# Q1 T) T}" u+ R* J$ @5 O9 h
1 A! b7 D9 [; v+ @; {5 m

1 r( v: r) _$ o/ p客户端:
  1. #include <stdio.h> 1 u3 n. l2 A6 K8 e4 H- w7 [, a" a
  2. #include <sys/types.h>   j" g) ?* G# t' P
  3. #include <sys/socket.h> 
    0 _; q* m5 O& w) e+ r$ c- Z
  4. #include <netinet/in.h> 
    0 b) k8 [# E6 a) Y
  5. #include <arpa/inet.h> $ f  y) k5 D& {* ?- X- V* E
  6. #include <string.h> 
    8 Y) D$ b% J5 J
  7. #include <unistd.h> 
    * P% G2 V. r6 t! [1 U3 x
  8. #include <fcntl.h> - F' ]9 ]7 a; d" b  W, d6 B) r
  9. #include <sys/time.h> 
    - t  Y0 ^8 E, g" ~( S' P3 U& b
  10. #include <sys/select.h> : p, m3 p, D( K. z$ M& t: p
  11. #include <sys/ioctl.h>  
    . U% a8 [$ k+ y# _" ?) Z- \- F& f
  12. int main() {
    & r1 v, }# i9 e' u& q
  13.         int sockSrv;
    . F7 n( w+ N) K! }8 w( p
  14.         struct sockaddr_in addrSrv;
    4 X7 B  M. K: V7 V* _
  15.         int len;( v  y) W# I( E
  16.         char recvBuf[100];9 o( M9 M- x$ Z9 P- o# @) o- S4 r0 f
  17.         scanf("%s",recvBuf);2 E* Q, P& K; @
  18.         struct sockaddr_in addrClient;
    8 Q1 u+ F. H3 T8 S* @3 n
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);' W5 h+ a& ~' V8 X' ?" R( i" J
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);0 g: x2 z# ~- b9 m
  21.         addrSrv.sin_family = AF_INET;
    ) h, N6 L) L0 U! F$ v$ ^2 Y
  22.         addrSrv.sin_port = htons(6000);
    3 J0 o2 |0 Z! I) R: p% N7 n+ W
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    + M" u/ Q* j  O) S, {( h2 U: E* {
  24.         len = sizeof(struct sockaddr);! V0 m" q- E( e, L7 N; |2 I* l
  25.         memset(recvBuf, 0, 100);: s8 Q, k7 C; S  O% C
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);- l0 J' d4 r) e/ \+ c! _
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));0 s+ m* i; C2 J2 P, T8 @
  28.         printf("Client data is:%s\n",recvBuf);
    3 G0 u5 R  m% _
  29.         close(sockSrv);- B3 k6 u& C  Y- M2 L3 N% Q. B1 a
  30.         return 0;
    ' E9 _4 w+ ?8 D7 Z; U+ N$ [5 L
  31. } 
复制代码
# @2 E- c: S- J( W  e5 h+ F
3 h, A* {) I; ^" C; ~
9 J/ w1 G. p8 B, ~% P5 k

4 V; V& x& o( h0 A
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-4-29 21:31 , Processed in 0.124474 second(s), 20 queries .

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