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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:( j5 q: ^  ?9 ~5 E$ u
  1. #include
    & a7 W2 ^! U9 a7 f% l- e, N5 _+ x$ H
  2. #include
    & v% z- X  k$ l! k+ ~, [0 U: }) ~
  3. #include8 @; y+ J7 {9 a  u3 E
  4. #include
    . n/ n5 w* }. z$ ^9 J7 a
  5. #include+ c8 X. b) o/ w: x: D" u! }: W( q
  6. #include
    5 q7 r+ ?- M: Y( i" P8 D
  7. #include
    4 q8 f' Y! }. U4 O
  8. #include
复制代码

+ V1 w. p- C* z/ i. ]0 h6 l9 t1 n8 Z( \
服务器代码如下:
  J: T( c( ]/ L/ W' m) C* U
  1. #include$ O6 S* ?, w5 s
  2. #include  i% D, k# `& B, Z3 k& }% P
  3. #include
    4 @; B6 W4 g) o: P7 I' r" s( P
  4. #include3 `& G0 D% G, T# n* [& ]
  5. #include+ C# O3 y1 X. f" k8 a' W# |8 V
  6. #include3 c7 S+ W5 ^8 U2 M! f
  7. #include) A9 a9 d3 U0 w. U1 ]' q  F
  8. #include
复制代码
$ @) U; I( H; ~* A9 F: i

# I' \/ d; W! m& n3 M- \
- X! ~0 w7 L% o3 j
2 {; [, e0 C- s* |7 B) I
* ?$ N+ Y3 [6 B# i$ G4 E
; W5 I: M' R$ P0 ]9 U6 s6 z2 N
5 p3 n0 b( P, J: n/ W0 i

2 I. c$ L1 _4 _+ r  l- n
* r" x* h+ ~8 U) F. m
# c) r+ x6 @5 n2 }2 ^
7 N5 \. E! M% h

0 V0 w/ j+ F" d4 U
! }1 q' g0 ]8 V7 b- H

9 n3 C- t3 Z' f, z  {7 O6 `
2 W+ W0 h" C% S- X4 i
0 [* F+ R& J1 A$ M  t

' Q) K6 ]! u9 Z. f
) j1 r0 r2 j: s& |: z/ f  y8 s3 Q  `

5 O% U$ l% Q: G+ i; |* w

# Q  w# A  q  g) h  w2 g+ U  M2 M; I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:% I1 h2 Z1 d# h& G& c
#include <sys/types.h> 
9 g1 E1 R; x( V* f6 b+ t3 p#include <sys/socket.h> 
' U: h/ z5 D" g+ F4 g#include <unistd.h> 
* `! `( p. v; {1 O, \#include <netinet/in.h> 
" u4 v$ C9 X, v7 x' T#include <arpa/inet.h> 
; h" X- P2 C& q#include <string.h> 7 D9 o; w6 s( V7 M% f1 E. S
#include <stdio.h>  4 \% `: k$ v7 d0 J% `2 `# z: b; a
int main() {
) m- ?: F7 U* j; g2 J8 ^        int sockClient;3 ]% I2 \: _! t; H
        struct sockaddr_in addrSrv;
. N3 g4 S! N, Y& S" W        sockClient = socket(AF_INET,SOCK_DGRAM,0);
9 U' L. C& Z+ i; \& q        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
7 d/ `' J8 I, k' h        addrSrv.sin_family=AF_INET;
, p* a1 u2 f7 @2 [8 A        addrSrv.sin_port=htons(6000);& O# A# g) t! q6 l7 x; U
        while(1)4 l4 v8 y8 Y7 I! t' D! z9 c
        {, R) s9 }- ?) x1 H
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
1 X+ i* J+ J# ~# P; s0 F7 d                sleep(2);, c* f6 A4 }& j+ t) t3 m4 o
        }    
) \: x* z8 Y* q: {) K1 `        close(sockClient);  0 ^8 k1 j+ M) X; a
        return 0; 
2 x7 o/ U. L) _- @}" {' w+ l$ b. ]* a+ E

+ ?) j- c* L7 z6 h7 K
; i+ N6 X( b& G' H# ?/ T, ]客户端:
  1. #include <stdio.h> 
    9 i; T: v' e* N* M' t# y' t( `' u0 X5 T
  2. #include <sys/types.h> 3 g  K6 d/ t9 y4 h/ g0 D
  3. #include <sys/socket.h> 
    , f8 R5 j* ]0 Y6 V' v% E1 z* Z
  4. #include <netinet/in.h> 
    ; W1 k+ Z) b: K+ D) x0 r0 M1 D
  5. #include <arpa/inet.h> 
    ! X# @/ n  k& N4 _
  6. #include <string.h> " F: p* [& ]# g# U$ B; W
  7. #include <unistd.h> ) @& ]! |4 O9 Q7 M0 j7 i" D5 I) X
  8. #include <fcntl.h> % \* I* l$ @& p" d" u! a1 t0 m
  9. #include <sys/time.h> 
      A; D' F9 y$ r: V9 C
  10. #include <sys/select.h> ( g* I$ C/ L9 n  H( H" j
  11. #include <sys/ioctl.h>  , ^& e3 t% ~" C3 U
  12. int main() {- @( H% }+ I3 R
  13.         int sockSrv;% U+ U2 c1 x9 n$ `+ f" z. L% `
  14.         struct sockaddr_in addrSrv;
    + p' M; {9 M& ^0 F$ f/ G
  15.         int len;
    - t' P9 Q5 X. s6 z2 f0 b
  16.         char recvBuf[100];
    7 B7 ^9 g$ o3 [8 M+ f# ^
  17.         scanf("%s",recvBuf);- @& ]4 |6 k7 w" {3 Y5 ?% I  E/ `
  18.         struct sockaddr_in addrClient;
    # j- ]7 Z0 N" X" M5 U4 h' `8 _
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    " R2 y! q9 D! N- \! o6 {9 W
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    8 d8 A% A# ?! w$ U
  21.         addrSrv.sin_family = AF_INET;: t/ M5 F  V1 `9 l7 B4 B* C
  22.         addrSrv.sin_port = htons(6000);! ]1 z0 u( x% q1 z/ a* G( l
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    3 Q7 |& B# \4 _9 B6 R4 f3 Q. [6 o
  24.         len = sizeof(struct sockaddr);
    ( e& D9 J3 G3 f& q9 \) p9 a
  25.         memset(recvBuf, 0, 100);
    / |0 ~6 w) B: [/ m# T# I6 Q8 J
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);% {, B  q3 z* `& O
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));+ X% U+ c9 V4 Z! ^$ v* ]0 F0 r
  28.         printf("Client data is:%s\n",recvBuf);$ d* D/ v+ I% ~. U
  29.         close(sockSrv);$ l  s1 D9 h  h) e; Y! @
  30.         return 0;0 B, v3 b5 K/ U6 x! @
  31. } 
复制代码
- K6 I* d. ~3 c6 ^  ]& A5 `

6 D: \  b: X0 I. D/ z+ ~+ t
* d2 U3 |  [& o: W; w/ [
; e: o! L4 C1 x; T+ }+ G
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2025-2-5 18:58 , Processed in 0.105865 second(s), 18 queries .

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