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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
+ ?8 B- O4 n/ w/ P% U
  1. #include" n( D# w/ U& {7 {8 _0 x0 r
  2. #include
    ; ~  d5 N; ^8 Y* R
  3. #include. {8 p/ ^( L" Y7 I
  4. #include
    ; E" y" r+ ~- P9 T& ^+ I3 X
  5. #include
    4 M" C, D: Y; D
  6. #include  E  n9 Z, U/ L* B* o
  7. #include
    : d" @, g8 C1 o) _, d( n
  8. #include
复制代码
! M" T1 n( w. D* }. l2 I; W3 n& m- M, A

2 k! {% x9 I. S3 V: Q! d! m* ~服务器代码如下:' r/ [  j) _4 {( m8 ^% P
  1. #include
    9 R$ Q5 r8 y3 t, b) a
  2. #include
    . @) q# m* G8 g( b2 p
  3. #include
    $ R& j, c, V; x' N7 ]
  4. #include
    5 ~1 J5 `/ |# e& h9 g! W' i2 Z
  5. #include
    1 m' I$ b3 l% m# {% A: Q
  6. #include* R) ~/ u# E- i( F* U: q1 T
  7. #include
    & I, J( q* s1 V
  8. #include
复制代码

; x# j" `+ {0 K% Z( r6 Y2 S4 x) _6 [2 L* U7 V
+ P5 }/ y3 b# `* S$ D
+ L& C( d3 n9 s6 ~4 C9 J

& E& P, |6 x9 n
" {8 I; @# ^3 q& F. e& ~

% A+ U+ w# U+ G5 Q9 L

- b8 ]: r) l) K6 Q% K# \/ K% Y) g( u  L

! o3 p/ A4 z# |# U) w* i& {. O( G. L3 g" a) _4 V

2 c+ r1 `# p5 _& \/ Z5 G% i0 {8 J1 j2 d

: Q# k- r% k- v' C- Y2 }
" g7 C9 {2 u+ m% }" H
# t# A( x8 r( j

. ^7 T9 T; n3 R3 i8 }1 |$ H

2 ~4 E& ~' T; G8 n4 k( N# b- [8 }1 Q5 e2 Y) C7 u
6 _" X& T# ^+ K) l( ]) R; ?3 Y/ w3 \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:2 o' N+ n. z# y, l' o7 |& e
#include <sys/types.h> % @' t- x6 V+ b
#include <sys/socket.h> + ^0 u, Y# ~) C' s4 X& w
#include <unistd.h> 
+ C4 r5 ?- V& I! i5 A: D& y" R#include <netinet/in.h> * e$ ~/ P) ]" L, B0 k4 A
#include <arpa/inet.h> 
; f3 M' K* h* A, ~#include <string.h> 
* g4 n1 e* D  U5 j" K  x3 q#include <stdio.h>  
" i- J$ |" M' |! B! p5 l) \int main() {9 b. L1 B' S2 x
        int sockClient;; P7 D- S9 U2 {% \  t
        struct sockaddr_in addrSrv;* }/ V9 s; [/ o" q3 _
        sockClient = socket(AF_INET,SOCK_DGRAM,0);7 t6 }! ^: }& T; m) |
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
3 y" Q4 A- `( e/ A. k8 g        addrSrv.sin_family=AF_INET;
$ \( l. t, a2 m0 f) x* g* h        addrSrv.sin_port=htons(6000);7 X# p$ V4 I6 o& N$ M& p
        while(1)
2 [. v  ]+ [# G        {
. W% I; N' d, h# I& |1 R! v                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));1 s* p' B0 ]6 A; L! o8 ]6 \
                sleep(2);
1 C# }: N# y& a# c( V* {) l8 A( I        }    
: u  x5 ^3 S' t* U        close(sockClient);  
5 {9 x" d# M" h; @- Y        return 0; ) d) J& U# I% x* L
}
) q' R" {* f, g
; |+ M9 J$ m8 f; g) w' Z0 w( h! c' v" a
客户端:
  1. #include <stdio.h> , z, c2 c/ \# ?! [/ d$ h
  2. #include <sys/types.h> 
    " O7 o2 k9 i4 g
  3. #include <sys/socket.h> 4 e7 _7 ]' a0 o' o6 ]! `& }
  4. #include <netinet/in.h> 3 o5 W7 V* ]0 S( t! I
  5. #include <arpa/inet.h> 
    / T2 b' W& S. \# ^8 c0 z4 a1 i
  6. #include <string.h> ; a& g9 ?9 |# z/ T
  7. #include <unistd.h> 
    8 M4 s: x5 R; h8 m1 h
  8. #include <fcntl.h> 6 W, |3 }- g7 d1 j1 f3 E/ {
  9. #include <sys/time.h> 
    3 i; _# h3 P: n1 H
  10. #include <sys/select.h> 
    4 C1 k3 O$ K2 M9 o6 U' f% k9 C8 D
  11. #include <sys/ioctl.h>    K/ d; V! p3 w9 U
  12. int main() {
      l2 E2 L$ F5 E! W" ^
  13.         int sockSrv;
    1 q5 S: s. u" S# N
  14.         struct sockaddr_in addrSrv;
    # o$ J* V0 |, ]) a
  15.         int len;/ {  T: a3 ]) M( f4 G
  16.         char recvBuf[100];
    1 A$ `' u; j, {
  17.         scanf("%s",recvBuf);
    . G& p. B* u0 j: E1 w
  18.         struct sockaddr_in addrClient;
    ! b  o/ E3 Z4 u" a! P( j
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ' e: j6 u8 j! s
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    & Z7 l/ q6 M3 V+ F* j
  21.         addrSrv.sin_family = AF_INET;
    # {) J9 f0 o" s
  22.         addrSrv.sin_port = htons(6000);
    1 e* a6 X; T  l5 |& s9 r( X$ K' j
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));+ t" Y& A+ P; l0 {0 ^3 P1 G
  24.         len = sizeof(struct sockaddr);, o" L# z( X& e' n9 @8 A7 J* {1 e( _
  25.         memset(recvBuf, 0, 100);
    3 z: K* W3 V3 n4 S1 W
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);0 c# v( X1 G* N* b; n+ O4 J
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));4 J6 b( s0 r2 C; a4 ?2 p: E
  28.         printf("Client data is:%s\n",recvBuf);1 d+ X  ], U% B- M, W) ~
  29.         close(sockSrv);" S) _: ?$ [- \3 w+ ~/ D
  30.         return 0;+ ~0 m# `4 I* x' J$ w
  31. } 
复制代码

- b( e3 Q7 p4 f) p3 o/ c. @7 N' u, j& L  F- `, k" q) V, z

5 Z4 |  O) E* e1 i. I
9 I& W$ v" P: T
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 06:50 , Processed in 0.113608 second(s), 18 queries .

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