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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
9 S# ]* w8 d7 ?
  1. #include
    ; h4 I: ~( K# J* p! R; V
  2. #include
    ! j- E! Y$ y" g: f
  3. #include# v  W0 ~8 A! ^0 O1 k) s3 q
  4. #include0 S8 `6 }- C. [2 D" V* Z6 e
  5. #include
    , f! w4 O) S. S: [' x
  6. #include2 j. K$ |2 N7 N: T3 r
  7. #include
    & d( U. O0 m. F9 J( Y6 W$ K
  8. #include
复制代码

# l5 v' Q7 @, N7 [! b, d' X# W$ W8 h1 y7 n5 ~6 A
服务器代码如下:- y% R$ ^  R' C
  1. #include6 G7 ~& n+ P. |% m& i
  2. #include' Q$ M( S/ T; o& D9 x5 @
  3. #include
    * c" k. g1 A% k& j( T# I; A- L
  4. #include8 C8 B5 y8 J3 A1 n  P
  5. #include
    8 [. |) g1 r* j. _  X
  6. #include
    6 b, l! Z9 X' A! B
  7. #include; f8 u' y  @2 j/ a
  8. #include
复制代码

5 E! e5 u* L  r* v' S) @, Y- d" F- d& a, M2 n  ^+ P0 h

6 J, L9 A! ~9 H1 h" P8 `) }* z
8 A+ L) N4 A+ i
% p4 j8 r6 W5 M- y; }* Y
8 O2 D% P9 [9 {
" ~% l* O$ d# Y% u0 I* T
4 \7 c4 o: T6 i( [7 k* \4 o8 z
/ i. O) o! |9 H- Q+ K

' A+ {6 Y  N0 ?0 Y8 U. B: P- b" s# z8 c3 O2 P1 g' F
* m5 c+ C& T* j& F0 h" `/ j( A
& ]4 U* q; G3 k
' e4 ^1 _- u% N5 ^0 Q% p
* T( t$ ]( y  R! h) C

1 D$ f7 c# ?6 Q; c, ]0 f
% ^  Q5 I/ I/ Y! p6 N& B

, t2 y$ C# K2 E% }/ \3 n8 O2 @2 I, }

, l* _8 ~( \8 I9 _2 k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
- e$ e5 i6 X+ ]9 s' ]  k, @#include <sys/types.h> & l2 c# ?" j, F& Q/ m
#include <sys/socket.h> 
/ e3 E. M) e) {8 Z4 M. U#include <unistd.h> % K+ u; T$ h' U( u
#include <netinet/in.h> 
' a9 ^3 ^4 h% v#include <arpa/inet.h> 
7 f  W/ {4 h* r& {5 \#include <string.h> & B; I/ X4 ~3 H  n+ ?; {2 b
#include <stdio.h>  
2 T( Y( L4 g$ N# w2 wint main() {/ w  T- ?7 _' P) q) a5 `  k
        int sockClient;$ p  o( `% w. R; K5 G
        struct sockaddr_in addrSrv;
0 |5 ^# f7 ]2 g4 _' m8 w1 Z        sockClient = socket(AF_INET,SOCK_DGRAM,0);
' k6 i4 `/ n/ Q+ o        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
% l0 l  r! O" h7 g! }6 |1 \        addrSrv.sin_family=AF_INET;
0 N1 e  D" P6 k: z, A        addrSrv.sin_port=htons(6000);: j* D4 G; `' N* s
        while(1)5 Z6 l4 x/ V/ T$ h$ c2 a1 ~/ }+ F
        {! m9 u! H3 O" s$ C4 E) T
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
1 l% D8 P0 X9 a                sleep(2);
  M2 N: w# `/ m0 L2 g) I        }    
8 X: L* t- C9 ]        close(sockClient);  
# n. d9 P5 y! o; T        return 0; 
# Z$ u; |. t% a}
1 D6 q+ `$ i; i* f% d
% @, S! k. O7 U0 V6 `: n+ y  z) v, N9 Z. L  r3 S9 |
客户端:
  1. #include <stdio.h> 
    0 K3 l- D/ O1 o* M6 [6 r
  2. #include <sys/types.h> / [" H# [! L! K+ @7 _6 _. J
  3. #include <sys/socket.h> 7 d3 d% D+ R* M. V( h
  4. #include <netinet/in.h> 
    , w' j8 E( m& z# i! }: e
  5. #include <arpa/inet.h> $ g$ ~; m5 t$ o4 s
  6. #include <string.h> 
    ' Z/ C2 Q* @  R) Z, }7 y
  7. #include <unistd.h> 
    $ ]/ _. N& q- K
  8. #include <fcntl.h> 8 L4 O% ~# R% y) y# e5 k6 ~
  9. #include <sys/time.h> 
    ) L9 ?0 r: g8 N" `  A/ K
  10. #include <sys/select.h> 
    - e4 p% s" _; k( J
  11. #include <sys/ioctl.h>  
    & d' m: h  F7 ~/ K9 o
  12. int main() {' f3 G; M4 J; I& C7 P* x
  13.         int sockSrv;
    : I7 Y/ w3 l) H# V' R
  14.         struct sockaddr_in addrSrv;
    % I) k5 x4 d1 s* @% K; [( _- B
  15.         int len;' W" g$ D& z) b1 f' T9 X
  16.         char recvBuf[100];
    2 B0 M% Q1 H& e9 R
  17.         scanf("%s",recvBuf);
    ( \5 u$ Z8 J* _2 Q9 m6 c+ g* ?! H6 D
  18.         struct sockaddr_in addrClient;
    4 h) E( n$ c" M3 d0 e  r
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    0 s1 u& P8 `/ @! g; z9 r
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    , n- D: N7 h* z1 e
  21.         addrSrv.sin_family = AF_INET;$ ]' w. {1 Y; Y  x1 s8 D
  22.         addrSrv.sin_port = htons(6000);
    % ~; c/ L8 \; f( \6 a- K
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    . R3 k; ^& A) B* f. ~3 O
  24.         len = sizeof(struct sockaddr);
    , U' i' K; J3 T7 X5 v7 Q2 A
  25.         memset(recvBuf, 0, 100);/ r( x' [7 I% u! B. K4 E/ b2 |
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);4 N3 A' ]5 v( k- B( d2 I3 n
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    * T8 O+ X* q* d' [0 Z* E
  28.         printf("Client data is:%s\n",recvBuf);
    4 A+ A) \# m2 ]
  29.         close(sockSrv);
    & G0 H! }8 d, A$ K9 l
  30.         return 0;* u% s' A5 l, G9 U5 e
  31. } 
复制代码
3 o; B. p+ I" r0 K" d  f2 h/ G

0 X/ ]( a+ A$ Q. ]* f4 Y/ H
( H. X: `5 c( T  H) H
, ?  w% S8 k3 D1 {/ x8 x
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 11:55 , Processed in 0.120146 second(s), 18 queries .

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