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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:- r0 z; A  f7 d1 c/ j5 |
  1. #include
    . D0 C- O  E+ Y+ t3 \" c6 U4 Q
  2. #include$ Q/ U3 C8 x; i6 N3 k" H
  3. #include; x9 M. v: F$ O+ p/ |8 v4 j
  4. #include
    ! \+ l; i; \; J2 F* I* J
  5. #include( k6 n) `5 l; a( S( S
  6. #include
    : a. \. N! `. c" k! S* f
  7. #include0 _$ d+ z: S. o4 m
  8. #include
复制代码

4 L* @# b& ^  n: [1 G4 k# ^
* u: Z  \# u, X2 Z服务器代码如下:# V; }3 Y( C9 a/ U7 V
  1. #include
    , M. D5 U. n+ B9 G7 D
  2. #include# j$ X, ?2 C. W
  3. #include
    1 N; J0 v& g  O- B
  4. #include
    3 Z8 Z1 g; D* a  x5 `
  5. #include  H8 W. O" ~# s% O
  6. #include, P3 z3 F: l# B5 k
  7. #include
    ; k/ K. F% r9 H9 [; O4 n5 y  g' r$ `
  8. #include
复制代码

, i  \9 s0 U! p0 \) C) z
  t/ E1 d; x! F) r' J8 u. f- ?# U2 w  ]; S" l" q5 I( J7 E
8 x/ J9 C# i, K: o' p; j
, ^) U# g' l. E9 Q) X* q5 r

% y( S! _. b+ y+ k3 N+ ?3 o/ e: J7 D( _1 H! S0 [4 P* a2 U

3 {3 h5 U+ e4 t
& J& v6 ?2 V+ {( W5 o: H% }% `
' i( Y. V: V7 t2 e

/ H, F& C, j0 Z- Q- P( b

+ b. J$ V5 {$ R1 N0 n; k( W- m0 ], C+ D, z! i1 }+ I/ A

1 v4 h. k7 ?# |- C! B/ \4 R5 ~& f" {( ?. ]' T9 |. G3 Q" n: `

9 X+ Z6 Y: F0 p# P+ E4 v* Q" c, M# i& [, _$ U4 a6 i

1 d: g; R' G7 ~) k5 n; M+ R  O& C$ P1 A6 N$ ^- X9 [

# E! H: H6 d5 G7 s" w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 显示全部楼层
服务端:; [% {7 u# h* T2 Y
#include <sys/types.h> / e$ I2 @7 S  u
#include <sys/socket.h> : p( j. W5 p7 m# x8 W! I
#include <unistd.h> 
" N+ [5 `1 N9 C+ j- Q5 m! \$ B#include <netinet/in.h> 
* @/ u- k% D) z' Z#include <arpa/inet.h> 
6 `7 n: i5 {& v" }#include <string.h> 
$ ]& T; E7 `4 R. y& v6 K) s#include <stdio.h>  . |5 O7 R) O2 l# {  ^2 W
int main() {/ v  u1 U/ o0 s; S5 \
        int sockClient;# G8 ~, _% D5 g* @* i
        struct sockaddr_in addrSrv;$ L- x) t, ]! J) d3 k1 Z" t
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
/ \  C% V! F% j& B- t6 m9 H( ]        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");' |; a% b4 n2 u
        addrSrv.sin_family=AF_INET;
: ]! N1 i7 f3 l        addrSrv.sin_port=htons(6000);! U( [5 d+ N; X) \5 E! S% ?
        while(1)
3 `/ q! A; ~' U# x3 q( S7 v$ \4 ?, S        {- ]" S- J# R8 q
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
: A8 W" J; ?( n$ T                sleep(2);
. Z5 o3 y  D  B        }    + @4 X3 t) j8 \; L5 X: p3 c! S
        close(sockClient);  
! n; q7 v" y/ T5 b' N        return 0; 
( f1 N" ~" v4 g( K: R9 O0 J7 B8 k3 V}# G2 Y% W2 }' U, V* @
4 ?/ }7 B/ V! M; e% h: Y- F/ Q
& D1 ?5 N: w5 j; Z
客户端:
  1. #include <stdio.h> 
    # a( |; F* V. [* K
  2. #include <sys/types.h> $ ~& K& o1 {9 @
  3. #include <sys/socket.h> . K& T) Q& E) `9 r- {
  4. #include <netinet/in.h> 
    0 I  b3 o4 b9 w7 j; ]5 N' m" S
  5. #include <arpa/inet.h> 
    . _: e% w! k3 u) p5 {" U9 r% k
  6. #include <string.h> , f6 `* c, u( U4 C5 I9 \+ ~, @& a
  7. #include <unistd.h> ; v- m- H. a8 A8 v% D
  8. #include <fcntl.h> 
    $ E! \0 r" P9 j5 @+ d
  9. #include <sys/time.h> ( j# M' N; i1 R2 R4 T+ J) R+ ]5 i
  10. #include <sys/select.h> 
    : Y7 {7 |8 \1 X& l; a7 v
  11. #include <sys/ioctl.h>  
    , v: Z# i' V( |, x  n. M  |
  12. int main() {
    " K! ^8 B+ b3 V9 b3 G* E. e
  13.         int sockSrv;; S- u' g/ h; [3 ]+ y
  14.         struct sockaddr_in addrSrv;1 v; P+ @' z2 q) W: a9 E
  15.         int len;
    8 K: k& K# x% p- \9 o% N
  16.         char recvBuf[100];1 M* l% O* t! m2 o! G6 e/ S
  17.         scanf("%s",recvBuf);
    ; q- X6 A2 I% Y, w, f/ r7 g" ~2 P
  18.         struct sockaddr_in addrClient;
    * c/ R8 h  D1 g- F# _& l
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ; d" m3 F8 @9 R  ~* U4 k& f6 y0 ]7 G
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);& a% m9 r0 D; d7 I) j
  21.         addrSrv.sin_family = AF_INET;
    6 S+ i% C$ S, P% N8 R# t. `
  22.         addrSrv.sin_port = htons(6000);
    + E2 _9 a3 H: _5 {% R
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));' r5 n+ f: V8 M$ e6 `  c+ H
  24.         len = sizeof(struct sockaddr);
    % ?( t* C5 X; t) o/ O! t3 U
  25.         memset(recvBuf, 0, 100);
      [8 o0 L3 e  N3 _0 f
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);" @9 Z/ P5 i9 @
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));+ W4 W' k+ H9 V4 r9 e1 U: Q) U2 ]( K
  28.         printf("Client data is:%s\n",recvBuf);! _5 m, \+ H: ?( @7 u2 \2 D
  29.         close(sockSrv);
    5 ?( w0 y) O( V' z% e) d
  30.         return 0;
    0 |7 v) ]$ k/ \" k4 F
  31. } 
复制代码
6 v9 P# i7 H8 U/ |5 a

/ H' d4 @% O8 [4 X0 y' `  g9 S
9 G9 ^, I% y+ y1 ?8 a- _
) U8 T  u& K: @- J5 c) o
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-3 05:15 , Processed in 0.114330 second(s), 20 queries .

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