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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
: u* ^9 u( M% l) ?5 N6 ]
  1. #include3 M/ y" K4 ?% }5 E. [7 e
  2. #include
    & s" W0 [7 O$ F! T# a5 I/ W: C* }* A
  3. #include( |# C4 B' P5 `0 u
  4. #include  p0 E6 q' X8 [+ ]' w7 l
  5. #include! @( G7 |' V( w6 H8 K* c
  6. #include
    5 K* S7 b0 r' Z; N
  7. #include; l2 w3 P* |) f& ^
  8. #include
复制代码
1 Q2 s$ Q# f: @, E2 o0 X% r- }# \
, |. ^! N1 S& a. d$ r5 U/ Q
服务器代码如下:  D; U1 l1 L6 {) v9 e: A' H& Y( d
  1. #include* U8 J% {# Y2 c2 Q! Y
  2. #include7 p& Y$ f+ `$ }3 n) S9 K5 m! N" e
  3. #include
    2 ^) n$ W8 y- _& x* B* |
  4. #include
    / |& h% Q3 D! ]5 D
  5. #include; J7 }4 z& v$ o0 y* B1 N+ X$ {
  6. #include) u- f+ }/ X$ t
  7. #include  c( a/ r6 L! m& ?2 }
  8. #include
复制代码

. C% W) D( D7 X: c
& Q2 t( C( J0 c/ U8 g# [( g: b4 V! V; q& b+ \

0 B0 W% O0 m, N$ w" e. u+ B/ A$ b1 h4 y/ j1 U7 R& j

0 Q( t' R3 O+ D1 K, k& d9 M6 z) P  j
) U7 v! i  b8 ]
" S/ n/ T9 j3 r8 y( k4 L; T. Q
- X$ s3 I- z1 l& U8 m2 `% i' m: X
9 E7 t+ Y: H% l! a- v; O0 f: E3 D* D
8 Z" ~0 [0 G" t% W1 S
; X; T5 G7 [; Q, l5 w6 z9 h
" I# W9 L$ L( X3 ?, W
8 u: [2 D. C2 y/ `6 X7 D. [

3 [- a% F3 B4 M5 }4 g7 g0 E

. }& u6 y0 j9 n; ?7 U
/ k# p; @6 r! ]7 {
: h8 j4 @: c* Y
- d5 F3 A8 |. S

5 `& N' v4 F) Q/ H: z* f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
. O' `9 g) r5 R" Y/ ^3 E7 Z#include <sys/types.h> , R- @  ]6 N, C
#include <sys/socket.h> , C3 e3 v9 Q! c# {7 u
#include <unistd.h> 
1 U0 @" w. h, {, j& A# P* m; ]3 D#include <netinet/in.h> - ^% Y$ Y/ D6 E" i' g( {3 v9 C
#include <arpa/inet.h> 
8 M/ W+ ]8 }1 a  |( X6 e#include <string.h> % r4 W! l2 O* {# S) ~1 O. K3 W+ ^
#include <stdio.h>  
1 B4 U3 W& d* ^& p  {8 D- C$ Rint main() {' [0 ?6 g) Z& Q$ o7 q: J# w4 d9 {- T
        int sockClient;
/ T. k7 C, A8 k        struct sockaddr_in addrSrv;
1 W* S* f+ Z7 p' R9 \9 W# a4 [+ z( O        sockClient = socket(AF_INET,SOCK_DGRAM,0);
1 i( y$ P1 }$ E9 C        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");0 L$ T; f: ^6 R% N/ V
        addrSrv.sin_family=AF_INET;0 P& {* p; ]: T: s: A2 F( Q+ o3 ~
        addrSrv.sin_port=htons(6000);+ T' {. R+ Z6 k
        while(1)
6 S( w8 `- g& @        {
9 E( ?) A6 C  y( P1 ~                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
, S( d2 \4 M: _" B8 |                sleep(2);
9 ]* a. u& c8 k4 p+ L1 r9 e, a5 C        }    
" s2 ?4 d$ O1 [2 g  x5 F        close(sockClient);  . D) P" S! ]7 _5 N, Q
        return 0; 4 h4 \; D6 o- Y* k
}
9 e9 a9 L: R( y# k5 ?. X+ O3 I, ~: B8 W) `8 v3 N

% ^% U. o0 N8 {客户端:
  1. #include <stdio.h> 9 c# F) |7 j8 Q) J: s) r5 k
  2. #include <sys/types.h> - {( S# E. H6 x. w
  3. #include <sys/socket.h> 
    & b- h3 q$ b; K. i1 t
  4. #include <netinet/in.h> 
    0 \: o1 X; R3 i1 q+ y. K
  5. #include <arpa/inet.h> 7 K, j+ i6 N% S/ X7 R$ e0 e
  6. #include <string.h> 
    7 j" V. S5 g+ ^
  7. #include <unistd.h> 
    $ E4 [( w: S7 ^0 J) `5 n
  8. #include <fcntl.h> " P* [2 A% K* w9 @1 @1 ^( n+ s9 g
  9. #include <sys/time.h>   s0 Y6 ^5 C7 i
  10. #include <sys/select.h> 
    $ f7 o9 w. E, u3 _  n
  11. #include <sys/ioctl.h>  7 `, y4 X; S/ I3 \" F# U* E! w" d9 O4 s
  12. int main() {& X) ?+ U; c. ^0 L" Q
  13.         int sockSrv;
    . K! F) J2 y* w" }4 M6 U0 W
  14.         struct sockaddr_in addrSrv;. ^( T7 s  f& T# K6 s
  15.         int len;
    ( K0 t- Y* V$ z1 a, s5 h
  16.         char recvBuf[100];, N' N& o- B) u6 k' a9 ]) L
  17.         scanf("%s",recvBuf);
    " q; Q# G) w: j3 x# V* e% u: J; |' r' B
  18.         struct sockaddr_in addrClient;
    % w: q1 m. v9 _* H
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    2 m# Z7 E3 `% @; J6 k2 D
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    9 l& h9 X2 }9 N3 S+ j1 ?
  21.         addrSrv.sin_family = AF_INET;
    ( T& O* `, w) b/ V0 ^2 T
  22.         addrSrv.sin_port = htons(6000);) Q) d, z  M. `- \- \" y. x
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    ; b: o1 j) y! @! d
  24.         len = sizeof(struct sockaddr);
    / n. I" W: n0 }$ F
  25.         memset(recvBuf, 0, 100);
    + f, ~- v. T& T5 w
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);; g0 S2 I5 V* l" s# s' L
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));- ]  n' d/ N* r+ z7 H4 u8 a+ ~
  28.         printf("Client data is:%s\n",recvBuf);
    % s  B7 j3 |" R. i
  29.         close(sockSrv);
    - T+ m# G& ]1 j
  30.         return 0;+ G! g, V$ i/ g" a8 ]0 `0 m0 Z
  31. } 
复制代码

) R8 e: u( X# {: H; d, t) u2 d- [# f& B* }
- J7 U7 e) J$ b  K% y- `0 u

! _7 s4 D, m$ ]# z$ U$ s
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-20 13:21 , Processed in 0.111070 second(s), 18 queries .

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