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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:4 }" F8 l) ?& a: O  C) x
  1. #include* ^! ~% E( m3 N
  2. #include# w* u6 Q- W9 P* X: k! ]. v
  3. #include$ `3 J0 r% w# O  B6 m6 D
  4. #include
    4 J5 E' o& L$ j2 H; D1 M# T% m
  5. #include
    7 O) y4 x% H# F( l0 F( }5 ~( O
  6. #include
      S0 u3 c, c1 K' K: v6 J- x0 ~
  7. #include* }( P! H5 @: M. O: {. ]
  8. #include
复制代码

4 R$ I6 Y) k4 O5 }
$ z- r5 A: `5 q服务器代码如下:2 y6 M  E' B/ x; \6 [
  1. #include
    ! K  X% a# f- \& c% N# V  D  U3 B
  2. #include: k) t! l$ G7 @0 T/ ?
  3. #include; B* T+ ?8 |  m1 u: i( F
  4. #include; p! [. Z4 J/ _; J  m
  5. #include0 f' b. m& X0 Z  O1 G, E7 z
  6. #include- F' E, W! l0 A& J( H+ I3 b/ t
  7. #include' Z6 n6 O* G0 ?& _3 P
  8. #include
复制代码
+ F! [. l$ g& F

, t, M8 w* e2 U& q) ?4 s% m( z( ]% A! e- w# B) R/ d# t
& H# I: Z: b! L% x; I: D

! [" g7 T; g! @. ]

8 b* _; |. K$ q
! s( {4 H% u, }) `- s) v' Q0 p
6 e1 g" \* ~, ~0 h) M) V- V

6 w% d" @! v9 S7 e/ W+ [
; ?7 q" Q# o8 `+ T' ?/ x  T" x% M" m

: j( o0 i# ?3 g/ C0 u

2 }( Q) r) w/ v4 R: c  s; Y( [; J' A6 t% ~0 i+ R3 `2 r

  O8 O- E4 U0 {5 w9 B) J  T) m1 ~

: Y$ ]& {* f/ J1 w
: E* y& C- G- R% b
' M& I9 r7 ^: B# T8 @
* e0 r5 J, `( G6 _6 |3 V; `0 D: ?

9 {* F6 B* [! l: [, t3 _% k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
, W3 Y# t7 H  k- r3 p9 d#include <sys/types.h> ; _/ |! Y) G$ H- z: A
#include <sys/socket.h> 
: t) J: @: g$ K! a. s8 Q0 e#include <unistd.h> ( R( k( K! p. M
#include <netinet/in.h> 2 ]3 F' I+ K( \! `5 Z' _$ h  i
#include <arpa/inet.h> 5 D- D9 @; L$ M% s! ]
#include <string.h>   P  @& q8 W9 Z( }1 Y. g; i/ ?
#include <stdio.h>  
, W# Z3 h" Z1 E( A$ yint main() {! ~& \3 _  w! u0 f1 o5 O0 `4 ]
        int sockClient;
5 G& T: F* S6 v$ c        struct sockaddr_in addrSrv;7 t2 M$ E4 b: H9 w8 f$ |
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
1 x+ N* \, m3 ]0 }' V( n( F# r9 I- U        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
* V! N  o. |9 y( T3 u8 p4 M        addrSrv.sin_family=AF_INET;7 w( |2 J; e. D
        addrSrv.sin_port=htons(6000);
/ W+ f+ r  H8 Y. R( s, y        while(1)9 O1 [2 f' g; Y( \
        {' S8 j) [2 q3 |$ T0 L# Q* a- b! a
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
* c8 O7 C! J$ X2 R5 g                sleep(2);
7 L0 f6 B7 `4 t( ^1 e- p        }    % d9 x. K) J) F7 ~& [
        close(sockClient);  ; w" ]. y5 V+ [- c' m2 G: i
        return 0; + o8 ^, U$ O* z& q5 M7 n3 X# k
}
9 T# J  @3 c) x6 b: i6 J! ^5 W( Y" a1 b7 j& R2 ?

* I0 i/ ]" ^2 R' P$ M  Q客户端:
  1. #include <stdio.h> 
    4 [6 M% d& |' H2 @6 s
  2. #include <sys/types.h> 3 u9 r! W" {4 c) K. X* n. ^( t. l. b: _; j
  3. #include <sys/socket.h> 
    + r" `6 m+ F. H9 \; H
  4. #include <netinet/in.h> 0 E. u' T" d$ f; ~4 ?% x8 _
  5. #include <arpa/inet.h> 6 s5 X' \6 L1 A3 n0 u) f6 x6 h% K" C
  6. #include <string.h> 
    ! k% Q& D  k; ^
  7. #include <unistd.h> + A4 k" \+ q4 r
  8. #include <fcntl.h> 8 n( e  u+ W5 z# v/ [  s3 h3 M
  9. #include <sys/time.h> 1 W0 @, Y4 a/ r& L* P" j' E
  10. #include <sys/select.h> 
    . [/ r) B& ~# K* h# D* c
  11. #include <sys/ioctl.h>  2 [2 k/ i$ H$ D
  12. int main() {
    . B' [, |+ J; L
  13.         int sockSrv;
    3 Q% b+ m+ q1 L: i
  14.         struct sockaddr_in addrSrv;
    * z4 {/ l$ R3 u3 I& n% }, M
  15.         int len;
    9 |6 ~9 ?( w2 h- D7 F: Y
  16.         char recvBuf[100];1 g% I1 ?, q# _# J% F" G$ m7 X( Z1 H. k
  17.         scanf("%s",recvBuf);
    ! j& I' U* Z' I% r* @- e
  18.         struct sockaddr_in addrClient;
    & |4 _. X/ L$ Y6 U
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);$ H6 I7 C8 A- C
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);- m  k  M. H3 c
  21.         addrSrv.sin_family = AF_INET;
    5 S6 p* F* M9 h- Z7 ~
  22.         addrSrv.sin_port = htons(6000);
    1 I7 e" a4 ^# j' Y1 }' J- J
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));2 f+ v2 R" ?; y( z$ v
  24.         len = sizeof(struct sockaddr);
    - w$ M! B, ^' n: R
  25.         memset(recvBuf, 0, 100);& A  k8 _6 N$ h& p* @
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    5 \$ O. v1 Q$ i3 C) W
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    7 f1 ?0 s( `7 \4 D$ j) H% g# n- ?
  28.         printf("Client data is:%s\n",recvBuf);
    & ?3 ]6 q4 z3 S% p! R( @
  29.         close(sockSrv);  M' t% v! a7 p  Q
  30.         return 0;- b' d1 X4 j+ e
  31. } 
复制代码

" y; u3 [( W& i! ?. i1 u+ {+ u9 W  [; A4 a& {5 ^) \. V& o

5 M+ [$ H" p/ l1 q  Z) L* ]( Y8 d
  i; k$ b" a7 h% W$ W5 l7 X
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 04:41 , Processed in 0.122068 second(s), 20 queries .

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