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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13961|回复: 1

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

[复制链接]
发表于 2020-5-9 02:20:24 | 显示全部楼层 |阅读模式
客户端代码如下:! W/ r, A; P2 Q+ s
  1. #include
    + a- R" j# O( L
  2. #include
    3 i& A; Q8 a; l; ?' {6 Y% S. `
  3. #include
    , s, N$ w, }; A  g, N
  4. #include! h9 k) p0 R; E
  5. #include
    & E% [: i# {% G- w; v* @, ~
  6. #include
    & W8 P0 a1 s) X' S7 ^7 A
  7. #include4 w% m' t7 X# n  z( F7 @& d/ [. C- I
  8. #include
复制代码

) i  U! b( `' S. n) h
0 m& \* O9 z; R# ]服务器代码如下:. w, S# x1 I. r! l) G
  1. #include5 I5 `  Y2 c6 `! V- d( h0 h$ \, N
  2. #include: _& @9 I9 A  V4 K9 {' J* |' w# b6 p
  3. #include
    # k& @' l" Z6 T' P& Y
  4. #include; j/ e- `" |, O1 Z+ p
  5. #include
    % l1 _9 C* s4 c8 Y  w
  6. #include
    . q7 @/ @/ K- F8 I1 S* w2 w8 R7 w
  7. #include/ x" Q; L; y$ h/ c9 x9 \+ x
  8. #include
复制代码
+ J; A. u' ^5 s. T. c" J
6 ^2 ?# T  v/ O. H+ q5 }

2 C! _' l4 {' L/ ^, p) ~

- f  i9 t* S" p, S" ~
$ n, L! C( B: @# u  V# T. B
6 t2 ^- i' n9 L

$ ?! \& [$ Y) L8 J" V- e
: _7 v$ b, F0 {: X8 K

, B: {% Q' h% r; t+ r

, g: s" |& d# y3 u4 y3 p6 [+ q+ Q2 S/ W$ y

  e. w8 L6 n- r+ G2 J$ W" M, d' m/ \* j5 p8 o% S9 J

; n& C8 D" {& f' ], P, x2 ^: K
, b& Y/ Y4 ]1 z) Q

# s5 z. D* |, o4 G- z& R6 {. c" p( e6 Y, a$ z$ P# y9 R
1 t! F# I% s& [# p- A* h, v
2 n% T& c) v- g
9 X! ]8 j4 O; ^8 s3 C# |7 Y
 楼主| 发表于 2020-5-9 02:30:12 | 显示全部楼层
服务端:; m: s; r. }7 j8 V9 E! Q
#include <sys/types.h> # D( B, i3 ~+ c% x1 o
#include <sys/socket.h> 
6 G: h$ w( v) Q8 Y: f#include <unistd.h> - h/ V9 o) J  Y' T& A6 Q, L( K) f4 t
#include <netinet/in.h> 
6 Y0 }$ J1 X3 [#include <arpa/inet.h> 
* Q5 ]7 {3 V" q! M#include <string.h> 
2 A& G; q0 m  q* ?3 B: d#include <stdio.h>  $ Y4 `0 p  k/ e! ^% m) Y/ f  T, a
int main() {9 g" F) g, d2 O$ X$ t
        int sockClient;
1 j) N/ h6 {  W3 h% ~        struct sockaddr_in addrSrv;
; y7 E1 s! e+ ~        sockClient = socket(AF_INET,SOCK_DGRAM,0);$ E( D, T" R/ ?; l' M$ \5 u
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
3 R% q- E5 W) n8 }$ c        addrSrv.sin_family=AF_INET;8 s4 z1 d" C0 o& |8 ]6 j% \% P
        addrSrv.sin_port=htons(6000);7 s; P0 o/ k  E
        while(1)
6 G; L$ Y7 ]* S% r/ V% T& m        {
/ M: M3 ]( m! E% u                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
& m5 g9 C" X1 q# S( X                sleep(2);6 `/ R$ ~( O9 ~0 g
        }    / p3 Q' m. F6 B, A: H
        close(sockClient);  # s" \! K: [( F; j; M
        return 0; 
, m' J2 s! q  u/ G$ v6 i: A. C9 I}, u5 N* _' ~. Z" ^* Q& V4 i7 ?) }

" K7 K, x1 t' }7 c4 D5 ^2 _+ d8 a3 C% }* ^/ A
客户端:
  1. #include <stdio.h> * l7 `4 ?" `7 W! }9 P
  2. #include <sys/types.h> 
    2 K' o) B) t7 n: E2 }' F
  3. #include <sys/socket.h> ; ]. w* ?5 O4 Y. B1 D  L0 Z
  4. #include <netinet/in.h> % w7 S% |, }5 [# b) H
  5. #include <arpa/inet.h> 
    6 E* m/ [$ b# z( g  C; Q, {( U0 ]
  6. #include <string.h> 
    9 Y; F! @5 J7 A4 d
  7. #include <unistd.h> 5 ~! w. O% N3 D; B- s
  8. #include <fcntl.h> - X% e0 A# i. v9 B) h. \( W2 C
  9. #include <sys/time.h> 
    8 O; q% H3 T% V3 A3 g4 q8 V
  10. #include <sys/select.h> 
    0 N- V* B# r+ t# C, \! H! n6 O0 I
  11. #include <sys/ioctl.h>  
    0 |8 K7 z# Z3 V2 v1 m- o9 k; t
  12. int main() {
    0 g4 W, R1 q3 @% X. b: l# n
  13.         int sockSrv;
    . q. \$ Y2 @$ p5 R3 v" M& X
  14.         struct sockaddr_in addrSrv;9 F, N, t7 H& `. }
  15.         int len;5 |& `3 k( d* W) z! i' u, B
  16.         char recvBuf[100];% g; m) F4 U/ _+ J
  17.         scanf("%s",recvBuf);3 ^7 g* Y( u6 w
  18.         struct sockaddr_in addrClient;
    ! r3 Q* L4 y4 u. b5 m$ z4 B. ^4 D; s
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);' ]  Z! [( Y7 s1 J# B7 ?( v$ J( [
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);* E& ?; L  P$ w2 N4 M' t# q
  21.         addrSrv.sin_family = AF_INET;$ _' U$ w; @/ r3 z. d# ^
  22.         addrSrv.sin_port = htons(6000);
    8 g7 r- @! V" o* O. F) t- i
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));; c! l2 \4 J* S
  24.         len = sizeof(struct sockaddr);4 @5 H1 x6 v2 h1 j3 t+ l# ]# N
  25.         memset(recvBuf, 0, 100);
    " B* V1 C- J. j$ `7 W! B. F
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);# b- N- l/ l  E0 X; a9 b
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));/ b3 n/ j+ D# Y' o
  28.         printf("Client data is:%s\n",recvBuf);, _  ?. ]: q4 y" w/ U) `
  29.         close(sockSrv);
    # w& v4 o9 r& |2 A( K3 J( G- W% e
  30.         return 0;
      Z" Y# p6 T5 g9 P/ ]$ |9 R
  31. } 
复制代码

/ R  t- n4 A7 M& u7 L' Q$ r7 v
: F. x; B5 ?0 D2 ^3 z5 J( i2 Y& |; o5 e# s  R5 n' ~

, e( {2 G/ d; c7 Q$ {: e
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-19 16:24 , Processed in 0.080910 second(s), 21 queries .

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