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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:0 s3 o: L: K$ z9 T( c7 R
  1. #include0 H1 V) b& Q# A' X7 j$ o, q
  2. #include
      _- a5 Q1 F, y5 i. w9 T4 @
  3. #include; E+ p( n' ?& A1 d6 ^2 a+ |1 i; ~
  4. #include
    ( W& \0 e$ w0 ?' A5 X
  5. #include/ N$ I) @4 `+ p
  6. #include$ D; ?& S& V5 j# t9 F. i
  7. #include. W: K4 d4 o# T$ w) W) ^
  8. #include
复制代码

3 q0 Q" b  J+ W( n7 @( i. Q
9 T+ v1 f  C, w. y7 [' A8 b服务器代码如下:
: c3 F7 x3 d$ w: S. U, T8 `
  1. #include" }- C- B$ B% R; Q; e/ W. s5 u, S
  2. #include
    % U* P9 X$ r' |: Z% R# _$ \* b
  3. #include7 V5 X' e4 N0 w5 ^1 _2 f* Z
  4. #include
    3 H# c0 z& V9 O. Z) m/ k) f
  5. #include
    2 b' N5 U8 Z% C( i6 d* I& E6 J
  6. #include2 D$ f6 F0 `+ h" m
  7. #include# R2 R  o; m% L! q+ L/ l
  8. #include
复制代码
$ b+ D6 B+ K$ w' w
6 X$ r- ]1 P# Q) H0 b6 x- S1 U3 L

3 r. b# S, b! F! Y+ g" d

5 D5 x. ^6 z9 y4 y- c; Z6 j
6 {6 j5 G8 ~. E
# l: M6 r7 [( U% g6 H
; q0 G. g6 T% e) u7 X+ E. L, X
6 p" x: v6 p5 b: {5 z

3 o9 r8 J; F) ^0 h# `
4 Y* h' E8 T  W+ q& d+ B9 F9 c
% R8 p9 J' `$ Q! C+ O
4 g7 U6 y: q: L' P- Q, A
0 I1 U* v- b8 ~% z- D3 v! J7 I
- C7 H+ M1 E2 E% v1 E" [, u
9 r* v$ T4 B7 I9 k& t* M0 m: K

& e0 Y! }2 |% q& V2 Z
! ]" E) C# N+ G9 m
  L; O7 u3 O, {0 A0 y) b

+ d  W. f. ~. g' [* f

4 j, m( S7 F  D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:2 E* {2 o5 @/ f" O% m
#include <sys/types.h> . K& M5 G* S# ]9 f4 l
#include <sys/socket.h> 
, H# F! z6 x1 x+ O+ |; _$ z#include <unistd.h>   M" L  g% G2 u
#include <netinet/in.h> 
  L- k  ~; U! t& ?4 H#include <arpa/inet.h> 5 e& u) a3 F$ i. y# e
#include <string.h> 3 X" B5 t- Z2 ]) ]
#include <stdio.h>  " Z  r) c( N* n6 K& j/ g
int main() {% q6 ^- ]6 _9 z9 S+ M9 F
        int sockClient;
* Y- K- `9 A1 \9 j* _1 O        struct sockaddr_in addrSrv;
( q" c. ~9 L- r3 q8 K        sockClient = socket(AF_INET,SOCK_DGRAM,0);  q3 W# X3 Q  |4 `% _, N
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");9 M2 p8 @) U7 l" @( C
        addrSrv.sin_family=AF_INET;
' u  A$ T$ u% z  K; y1 q6 M3 l, A        addrSrv.sin_port=htons(6000);' J: L1 l; y& D3 F. g0 p. ?
        while(1)
1 B' R3 |+ X) K1 V/ A7 H        {& Z! a7 b9 S: M+ R6 d( R
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));6 o' [4 r0 ~- {2 X) _. U9 _$ N
                sleep(2);1 R* @+ g- s! X# m2 _
        }    / u  I7 [+ |2 I% B7 T3 z
        close(sockClient);    |# e5 Z  s) y! `+ Z
        return 0; 
* {  b3 {+ F$ y6 n}4 A* j4 J: D. h+ ]: a6 z" ^

7 b* y# D/ X* A6 S% G7 S8 {( Z( |" d) \3 T7 H8 M
客户端:
  1. #include <stdio.h> 
    ' j0 O& F. [: V2 H
  2. #include <sys/types.h> ! y7 z1 U) G! \1 T/ N/ s" @3 e' @
  3. #include <sys/socket.h> 
    ) j  S7 J+ X; W" w, @: ?8 I& Q
  4. #include <netinet/in.h> 3 x: N. u% @% f. I+ Y
  5. #include <arpa/inet.h> ; z" z$ i2 l9 Y
  6. #include <string.h> 
    # @+ ^- k% w' K- l" i9 B
  7. #include <unistd.h> + g4 b/ _4 d9 z8 C
  8. #include <fcntl.h> 
    5 q3 G9 V% M8 S* @/ j
  9. #include <sys/time.h> 
    ; M7 v" I9 V- K! C1 ?3 Z
  10. #include <sys/select.h> 
    " Z6 M6 K/ U6 @) P! r  T' Y
  11. #include <sys/ioctl.h>  
    ' E9 q- B0 k' @5 l3 b3 @
  12. int main() {
    . m: ]& Z1 O( z1 K& A1 K4 Q7 ^* V
  13.         int sockSrv;0 p5 U, A' f" W! O
  14.         struct sockaddr_in addrSrv;
    9 n9 B5 s  t' d5 `
  15.         int len;
    + z0 v4 p! B* [. Z% X: e% }& j
  16.         char recvBuf[100];
    ) s+ o8 M; Q# ?9 C' A" [
  17.         scanf("%s",recvBuf);8 q6 z3 p; O! x
  18.         struct sockaddr_in addrClient;# f" d6 h* w' v4 w  U9 ~
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ! u" I, D8 V$ a& b% O4 X7 r4 X
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    ( V- b. L& a/ M9 D4 S4 T% @& g
  21.         addrSrv.sin_family = AF_INET;
    - P, t' `! v, {! J# W
  22.         addrSrv.sin_port = htons(6000);1 \) V( c$ e) Z( e) N( n
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));9 G# o, F2 `( ~0 Z7 a
  24.         len = sizeof(struct sockaddr);9 K# v9 |$ {% Q2 h+ b$ w5 ?# C
  25.         memset(recvBuf, 0, 100);( r8 `6 T* `- [5 O
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);$ G* W# ~+ X0 I5 C; l0 T, \; H: f
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));1 }& Q, u! p& J2 ^8 n* O$ N% h8 b
  28.         printf("Client data is:%s\n",recvBuf);
    % \9 P1 e+ D! t. W2 W
  29.         close(sockSrv);
    2 X1 V2 C( D( O4 R; b) w# W
  30.         return 0;
    % c# |' n* g0 F7 b' }
  31. } 
复制代码

( p$ M  [1 t% `! d3 f' K1 Y; A9 B
& s0 o- e+ D! ^+ Q; b! H. r% @- `% z/ F9 z  H: U

3 R) n3 t: o- N" o, m( b: q
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 13:04 , Processed in 0.063750 second(s), 19 queries .

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