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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
+ g, t4 ^) ?$ I2 a- }) o
  1. #include8 u3 P+ O; q+ X: J! F5 j
  2. #include
    % J" |2 l$ ~$ N# P- x
  3. #include
    + \" m" W. @4 x: u7 v
  4. #include
    * l, Q4 h" v+ d' {
  5. #include- e1 j( f. {6 F
  6. #include
    9 G6 a+ y' ~5 B
  7. #include
    - ?* r3 r* [+ |+ e9 d0 X1 ^: g5 i
  8. #include
复制代码
" `) ?3 L, r5 U  n
0 y( X: K; a, q+ E. {  |
服务器代码如下:
' x* C" R" f9 N% I
  1. #include
    ' n" A: R# Z  W6 Y: Q' v1 [
  2. #include. z$ h2 F( o' Y2 {$ a2 M. l
  3. #include3 ^0 c# y6 T$ l+ P9 a2 @% v
  4. #include
    ; v3 e. K! k% o$ f
  5. #include
    7 Y* k! x/ P/ ]- ~& x6 `5 Z% z
  6. #include5 d8 T0 p+ L* Y- S+ {; _& G) m
  7. #include
    5 l0 _- z& r$ ^+ w7 m; q
  8. #include
复制代码
: h% b) P+ W- e; P
' d2 F9 I, Y% a8 d
. O1 k9 a/ M2 ~6 h: I) O4 X# v

$ x" M* Y+ x& v  C' A" G* j- U8 h1 l4 t) D* s  Q$ O/ T2 b- W

+ S9 n" N3 j5 N0 w. ~& o9 o" F' Q0 k- n1 B

' ~. M' x4 {  ~  C# V# ~/ g2 t0 j  Y6 n: t7 y* ?: Z4 F, w1 u$ ^

3 s1 }- b  ~% m* v1 `6 V- @. q- }( G0 H2 K

7 W* T3 z8 O; i5 r- [' ?0 Z% F- h' S4 d* I' A- x
* v6 ], t0 |9 s- v# x, H

$ F' X* L6 h, j  x* e/ Q. ~
) b, B1 o) n6 R+ S! o

. s* `4 D8 _# b2 {' W0 H
+ m" O) L- [4 u. Z. v
1 X0 H) g$ S- M+ _9 H

/ ?" J* v% C! C8 {# O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
7 O: L; K- E9 s. Y: I# ~#include <sys/types.h> 4 Z3 a: s4 `" c" F$ d$ K: @
#include <sys/socket.h> 
3 S" ^% K. l! G, e0 s#include <unistd.h> 5 g- l( e" T1 w1 C% @
#include <netinet/in.h> 
+ E8 r0 y! `) i/ M& N#include <arpa/inet.h> 5 q0 x9 o1 j" N2 {: R- X
#include <string.h> 1 N6 A& c) l9 N' ^
#include <stdio.h>  
& I8 ~, Z, C) p: k4 T$ ~! t" Aint main() {
% T4 V% J" N3 H' d        int sockClient;
6 u7 ?1 N+ C6 ^* K        struct sockaddr_in addrSrv;
) ?6 I8 p' o% N% S7 O1 [        sockClient = socket(AF_INET,SOCK_DGRAM,0);
6 J: ]/ [0 ^  d8 y. a        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");5 F- T/ e& e) C& a3 r: G: ~
        addrSrv.sin_family=AF_INET;% a( z6 G- `6 Y, w) k
        addrSrv.sin_port=htons(6000);
, S3 r& S) ^) A. b        while(1)
: c9 h% f4 _5 b$ D  b) W        {
2 @- k  r: o- i- U  Q+ g# O' Z                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));( B7 B9 ]8 i2 L$ o6 g6 ^' J
                sleep(2);
! k; k; {# W* e  i; Q        }    
+ B9 \* O* y7 o* c8 X4 S        close(sockClient);  
! X6 c" Y, C. e: P        return 0; 
/ G7 m8 Y/ N( ^9 d8 m$ U1 h3 y}
; v5 R, A( Q! I8 t0 l4 d/ s1 {
2 t! ^2 Y& f, Z, l- C
% `0 u* M# j% p( H. n; S客户端:
  1. #include <stdio.h>   S# X9 P( @3 n" {1 |; S
  2. #include <sys/types.h> ( R7 U. G7 G" a: X  @; B$ l4 F
  3. #include <sys/socket.h> 0 r. Z( x- P6 L+ C
  4. #include <netinet/in.h> 
    4 J( p$ [4 z  J8 o! v* f
  5. #include <arpa/inet.h> / Q6 u+ }5 D5 J3 c
  6. #include <string.h> 
    % J/ T4 d) a! w; p/ i3 V; w
  7. #include <unistd.h> $ ~6 ^: l* b1 u0 Y/ R6 ^  H4 F
  8. #include <fcntl.h> 0 W* g! Q3 K" ]4 ]6 q2 j, [
  9. #include <sys/time.h> . G7 W& Q5 |8 k, w+ Z' V
  10. #include <sys/select.h> % x3 R6 A3 W) G4 @) t9 Z& C2 _' B
  11. #include <sys/ioctl.h>  0 k* ]  B* z( n! R. C: ^
  12. int main() {5 y8 y6 _, N4 J5 V) ]4 p. p
  13.         int sockSrv;: r5 {- O% Q2 P6 h7 J, A- B$ b
  14.         struct sockaddr_in addrSrv;5 Y- Y& m0 V/ N
  15.         int len;1 {. A) [2 a1 h' r, b: I# T6 f3 G
  16.         char recvBuf[100];
    $ J3 z2 A! _1 a) ~2 q8 i# Z
  17.         scanf("%s",recvBuf);9 h) z( ^$ G$ p! s
  18.         struct sockaddr_in addrClient;
    ! x: g+ V" ]5 D& F
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    / S' g( u! D8 l. n6 K3 t; e+ _9 K! B
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);% E4 s& b  z0 o. {
  21.         addrSrv.sin_family = AF_INET;0 d# F/ H8 Z1 |9 Q" [
  22.         addrSrv.sin_port = htons(6000);4 P7 R1 A' R/ I4 q  v3 x' V# V9 J
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));& j3 l8 x  |2 v
  24.         len = sizeof(struct sockaddr);" |' t' n; [; u9 s9 M+ N
  25.         memset(recvBuf, 0, 100);
      s* r4 o0 R- z: }: H
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    * O/ F9 r( X8 R6 X" d2 {- J
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    6 H" [6 U: e  n" x2 T
  28.         printf("Client data is:%s\n",recvBuf);
    $ `: X. m5 E# d" v5 U% T7 C2 Y
  29.         close(sockSrv);
    9 B; J8 @" w+ |* z/ d& @3 T" I
  30.         return 0;  Q+ r. k) `* s$ T
  31. } 
复制代码
$ d! U9 U+ S2 M1 }2 r1 F

+ A2 R- n! p% Q; P
7 Y" y1 q( c. c) H2 k9 N2 b( @$ R' Z/ V, P; n) D1 N0 U
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-19 22:42 , Processed in 0.062692 second(s), 19 queries .

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