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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
% y. }& ~4 I& S3 T2 b
  1. #include
    8 R* F( X  v9 z" g8 m) O! o% h
  2. #include
    $ E2 f0 g5 L; d/ L6 x& f
  3. #include
    # x' U5 L2 z6 c3 \+ G- u
  4. #include
    $ n, x2 }  {: c
  5. #include
    3 F: z/ m# e1 u# e
  6. #include4 B+ e0 M: v, c2 ^$ J
  7. #include2 v& g' B1 b8 _
  8. #include
复制代码
; _2 O( }5 d' j

/ f% d( B4 J1 [8 c( o+ V; W服务器代码如下:
( r' V' |* D0 ^
  1. #include
    5 J" R0 H" R$ N4 B0 a# |% }
  2. #include3 }2 r+ }  U8 }' z
  3. #include4 y" t- u% v4 s) a/ N, m
  4. #include6 {3 t: Q9 s. z: j
  5. #include
    1 }4 a# }& m& y8 x) ^7 G
  6. #include
    . h3 T- L. _( f* I# F: v% O6 f* p
  7. #include' v/ _/ h4 q6 l
  8. #include
复制代码
# @: w) h% @2 z3 D
) u6 {0 ?$ V& @6 E( t
: l3 J  e) o: ?; g7 @, S
0 S# c# m% h3 Z( S* d% n0 p
! b% D7 N2 g3 y1 b+ v$ R6 d; G

8 `# _( s5 M8 P2 o7 a
1 V$ Q; m- [: ^) c6 W& {/ Z

; O4 I0 u5 N( N$ B! D
8 w# {. T& A8 \

! O( t/ c0 g* Q- B) s# m* r% G$ S+ U* [* V

1 y6 u: X! ?  x/ ]$ ~6 H  g. e9 D9 d9 Y! W6 V; [, Q* T
% Z1 {9 M1 t  }4 [
4 u$ t' V% k& s: m# o
$ k9 K9 n6 q- ]$ n2 M9 R
! s0 j, X0 ]7 a' R% A
: S: [4 ]# t3 l1 f
0 d$ |  i1 w/ {

" B! G2 m6 f* v; w: k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:7 N. n3 M" B! e
#include <sys/types.h> 
& B$ A* q) d7 r( q2 t#include <sys/socket.h> 
: V+ u% ~4 _. H' b" H5 z5 C#include <unistd.h> 
, v8 W" d, C( V#include <netinet/in.h> 
4 g; Y: \$ @& ]0 U* E9 p#include <arpa/inet.h> 
3 r/ Z! X3 ?8 a) L: W. f#include <string.h> 
; t" L+ J! C4 s0 i4 q' Y9 {#include <stdio.h>  
* v1 O" t2 h5 t2 Y5 v+ @int main() {' W& d& c4 v: I+ o# @3 D7 X+ V
        int sockClient;
5 g' [1 k: U0 u; b; }) t" o5 \1 G        struct sockaddr_in addrSrv;9 k% _- r$ h- F  x& {+ u' X' j
        sockClient = socket(AF_INET,SOCK_DGRAM,0);  i7 G) h$ N% y* u4 m( p3 V" T# m
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");" U% @5 U7 x3 z! U
        addrSrv.sin_family=AF_INET;" ]) R% U7 v! W
        addrSrv.sin_port=htons(6000);0 ?9 |* Z  C" A* h& k" i* y. E* Z
        while(1)
- X7 M) r; q5 @; ^  a# w, t4 g        {
! n+ j9 G0 E$ d! n' ^; |4 Z3 y, Q                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));+ b! i8 `% G% D6 v
                sleep(2);& \$ a- P2 V* C9 V
        }    
: k! D* b+ P% K2 i# o  ?5 _        close(sockClient);  , Z/ v" l/ K( e' l- j
        return 0; 7 c/ c% z( j6 u8 t. {% Q
}
! _( _1 Q7 u$ u
' a1 Q4 i8 \& X6 i; |+ Y3 I
3 c% a6 D, ]/ h' b客户端:
  1. #include <stdio.h> 
    # m/ g! H) S( Q- u$ p
  2. #include <sys/types.h> 7 ?- {# L# A. I1 v3 `
  3. #include <sys/socket.h> ( w+ q" e3 q/ `8 {& K1 N! M
  4. #include <netinet/in.h> 
    6 m* e/ ]9 {( U: m+ }
  5. #include <arpa/inet.h> 
    7 e9 K' V7 o4 }* e% T
  6. #include <string.h> 
    3 U! ^4 j8 e8 W( `; b
  7. #include <unistd.h> " R& @3 ?' o1 B6 |  Z( c# d: }
  8. #include <fcntl.h> : y- M/ c4 ~5 R
  9. #include <sys/time.h> % q" R) a0 A6 e. s4 E
  10. #include <sys/select.h> 
    0 r8 f  D' d  i' N+ e- @
  11. #include <sys/ioctl.h>  + E# Q* r" Q! T, y9 @
  12. int main() {6 Y( I4 m/ q' U
  13.         int sockSrv;
    / h% t% J! F$ O- l
  14.         struct sockaddr_in addrSrv;
    1 S/ {. Q3 b' i9 Q, E
  15.         int len;
    * y$ D0 F4 k2 R( b* Y$ Z
  16.         char recvBuf[100];
    6 z2 Y: l# j# ?  j
  17.         scanf("%s",recvBuf);
    : ?+ R( w% ?% c4 b- f2 M- m4 w
  18.         struct sockaddr_in addrClient;7 B( X4 j: `3 u9 d
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    , J" v9 r+ [3 C6 L8 g0 v. D
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);1 i0 y* Q& |) S8 w3 m
  21.         addrSrv.sin_family = AF_INET;
    6 I7 E! K7 E- z7 o7 F- |, O1 A
  22.         addrSrv.sin_port = htons(6000);
    ' g4 v; `) ~! Q( S
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
      c9 f& ?! Z0 }1 R5 c0 s" c8 L
  24.         len = sizeof(struct sockaddr);
    " }- d( m8 R. }: p3 ?8 p) `
  25.         memset(recvBuf, 0, 100);
    & t, S- j3 r; h, b+ P% X: S
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);- E9 G$ I9 p5 g8 h: y
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    5 d& G! t9 t3 A( Z
  28.         printf("Client data is:%s\n",recvBuf);, O% F. S/ _2 t+ o% o
  29.         close(sockSrv);3 D/ h, a0 l: [6 U
  30.         return 0;
    % B, O- _; d! j; |8 b5 d! J& d" {
  31. } 
复制代码

+ J( K$ C( r& E" q/ W- ^' X. L0 v5 x# G. i: `- K

! d/ @4 }9 e/ m5 p* K  s) `! D# B1 ~& A" [; S; U
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-21 03:18 , Processed in 0.061065 second(s), 18 queries .

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