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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:/ Z7 m. _. n6 W& G  j
  1. #include
    8 ^: E: b% u5 L& a* ^
  2. #include
    7 f0 {8 Y* Y6 R
  3. #include
    9 Y( R* ~, U, U3 N
  4. #include9 d7 h# i9 S% L0 c
  5. #include
    / Q* o: x, B: }5 ]* e
  6. #include* H# q* n! D/ I. c- T4 ~
  7. #include
    1 S" F+ q7 ?( E7 E! U
  8. #include
复制代码
- k6 m7 x% c$ ]( |, S& f

0 `5 u( u; F$ x' o! G; M服务器代码如下:" L$ T' C  x1 Q. r
  1. #include" d# t! D7 L. g7 q' Y1 o' [
  2. #include3 d3 W9 V8 i2 f+ q9 j3 C, }
  3. #include
    5 t6 ?& ^# k( Y8 U- d
  4. #include
    ) I4 h+ I' p+ e/ y) i# a
  5. #include/ @) Y6 |9 E5 x( X, t/ N
  6. #include5 j/ u+ A" S, l% X
  7. #include5 R# Y3 J; |, M/ O! S/ A1 e* B0 h
  8. #include
复制代码
) w8 m& s( k; Q6 L

) s& L4 w( o9 q8 }- e( \$ M9 t
4 h1 n$ Z7 }: Z7 e8 [7 g6 d* j
! Z% _4 g; M8 q3 t% v( o0 J
2 A9 d  c* u. C

: a9 P# _1 e1 y0 W
+ O8 k/ {5 t& T- u' y6 |

: g$ Q' z9 O$ Y! w/ ?! s2 [: b+ ]9 b( F8 Y; k; V2 m

, ~: u' S& n. {+ J; @) P
# Y5 L* k: e' K

+ s. N8 A1 T& B" u7 E
  _  A' ?& ], z8 L9 L

3 S2 w4 \) C+ w# i0 I! s
& p8 G. x4 z7 }# n8 |

" |" ~- U' a: x+ P! w9 o4 l5 b; S% U2 ?+ F# X
6 E7 U- z  u. L( ~, G1 W
8 {/ R4 b6 f3 R" C. t
# b$ b; t* L9 L5 b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
* i& V! Q# c# q+ ^$ y, c0 W! n: a#include <sys/types.h> 
" x8 a4 b4 P4 @. p; J#include <sys/socket.h> 
2 K/ Z$ ]1 T) B) h$ z) E. ?$ ~#include <unistd.h> 
. ~$ i' x6 d2 p, E2 I3 V#include <netinet/in.h> % Z( q6 c* |  e% Q$ V6 e
#include <arpa/inet.h> 
6 ^3 b+ [" H# ~& G4 U0 {#include <string.h> 6 d3 ]/ J" n1 j; E7 _8 b
#include <stdio.h>  
( k9 k2 j1 D4 D7 xint main() {
  V$ u2 N0 o2 k% w! W( H. M; X+ |        int sockClient;
! Q: z: f6 ~) `5 V1 T; Y8 x        struct sockaddr_in addrSrv;7 X0 x; t% s& ~' c  f" c* O( k5 R) m
        sockClient = socket(AF_INET,SOCK_DGRAM,0);3 m7 `* p! \0 H3 [
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");+ S5 n# k) g" U
        addrSrv.sin_family=AF_INET;
( h/ l3 D  @' @8 r& _; |/ h" M1 e        addrSrv.sin_port=htons(6000);# x8 Y, `- S$ T  p$ g  h) B  c
        while(1)
6 O! o3 W9 j5 D0 h        {
7 P- V! M, z4 i                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));8 F: Q& b; f2 i3 M5 w
                sleep(2);
' D6 r3 W% a& w# j6 b; Y        }    7 _- |8 r3 W' t& R
        close(sockClient);  
' ^/ U' \! p* L( {0 I# {        return 0; 
3 a" [: O; u. A! r}
  N# ]9 C6 O% W( D2 R+ K: w6 |2 @: E# l! h5 Z& V6 a
- M4 ~4 O3 V7 d% t0 K
客户端:
  1. #include <stdio.h> 2 ~$ B$ [' J* o- D; \
  2. #include <sys/types.h> 
    ' X0 V4 J7 C! g2 _" _$ ~8 @
  3. #include <sys/socket.h> $ e, J4 E2 }" ^5 S: k8 `7 @; U
  4. #include <netinet/in.h> 
    ) ^( _% v% E. X2 I) K
  5. #include <arpa/inet.h> 4 r( A. \2 L/ M0 e! c  h
  6. #include <string.h> 7 D% H; d. p* u9 Y# d7 w; R' ?2 l: |
  7. #include <unistd.h> 
    ! G' f3 ?% B: c+ T+ [/ [3 A
  8. #include <fcntl.h> 
    , z' l0 D5 p" F+ e1 A' \' F+ H& R
  9. #include <sys/time.h> ( f8 n2 I; F$ ~3 ]9 s: @2 L
  10. #include <sys/select.h> 
    5 E: M- B4 @+ U+ E: B! P1 l
  11. #include <sys/ioctl.h>  
    ' W9 O; Q4 I! h% ^" z; S
  12. int main() {
    ; Q( A" o3 S. B3 _: O; x
  13.         int sockSrv;
    $ u7 D6 r7 l9 M
  14.         struct sockaddr_in addrSrv;. K: m$ l! e7 z' m- m7 F) H
  15.         int len;
      Y+ R$ }# j! u! M$ {, F8 G
  16.         char recvBuf[100];
    1 K* f6 }9 D2 [
  17.         scanf("%s",recvBuf);
    1 ?% @. Y8 S: K7 ]# D: G7 b
  18.         struct sockaddr_in addrClient;
    9 U3 a3 J# ^1 A5 b3 E, g
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ( A$ z; e4 D9 S6 O( B
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    ) `7 f8 d2 _. y' k! o* w
  21.         addrSrv.sin_family = AF_INET;: o; b, r8 @. c3 p
  22.         addrSrv.sin_port = htons(6000);
    1 G+ ~* A% d$ d; i  H* K$ j4 L" R
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));9 K3 h" b! h* |- \
  24.         len = sizeof(struct sockaddr);
    " Y* z( _2 }1 l1 v9 \. N+ R. D- B: b
  25.         memset(recvBuf, 0, 100);
      d- e5 d" ~: s" e
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);' n% X/ w9 E) E/ m) Q/ J* J
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));" b* ~! N7 J2 x9 p. H. A& Q* _( {
  28.         printf("Client data is:%s\n",recvBuf);# F$ h* i" v( A+ I( f" t
  29.         close(sockSrv);
      X) I, d2 D2 n! R  w$ G+ Q
  30.         return 0;
    / h2 m) \+ m5 W3 u& c8 e, }& }
  31. } 
复制代码
, d+ @/ S6 k1 h$ O: |1 x/ ~: ?

+ K0 R2 {- K" |8 o7 k
# U6 A/ A( g6 p& ^
+ K6 t3 O# S  H& o" U3 H
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 20:02 , Processed in 0.080820 second(s), 18 queries .

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