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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
/ J* @# Q3 \- p$ F
  1. #include
    4 ]- h3 `9 U* }/ e
  2. #include
      M7 C2 a- M" f! X
  3. #include6 a8 f/ W* b, Z/ C
  4. #include  {1 u5 L& D8 ]% N* ^
  5. #include
    9 s1 ~) G7 R: ?0 W" ]. y# f
  6. #include
      m2 n- I! K) r6 @# ~
  7. #include
    + C4 n# N. Y# b& {  J8 u
  8. #include
复制代码

2 f. ^$ d9 Q+ b
& @$ Y6 g9 X( n9 [* Z* v9 x  `服务器代码如下:( \  Y/ m- L2 ~6 C, {+ W- i. o
  1. #include
    & z. i/ a, S6 N, X% W5 D
  2. #include
    $ F. w) y# s7 `+ H* u
  3. #include
    ) `. ^4 I5 h3 s, `$ X; ~" h, ?' a# `
  4. #include6 Y" A0 ?6 ?1 f" d+ r# |) A# G) @
  5. #include. K  z7 B3 }5 ~  A% d, n8 V" N6 A6 j! c; I
  6. #include4 I& ~7 N3 j2 t" K
  7. #include! S8 c7 ~$ [# a& j) _- B4 q
  8. #include
复制代码

" \( u) Y0 r0 n" m# A, j0 B. W
% E, o, |5 A8 t7 o3 ]* V' b6 K7 ]6 W
$ u8 E: g3 g$ q% b; M5 g

! ]; b4 ^5 o* u1 ?* B' \' Y9 y5 Q" r6 z

* x2 X4 w$ J  o: z; U2 s
# F) l' F4 }) o& L) u/ Z7 x7 c9 I
0 K# j% x$ Y' P  T) {& R1 O
: ?6 i1 [  j. h! u/ N8 [0 `

% }+ \; a6 @! t
* _3 U6 u$ u9 H1 E/ C
! z9 c" b8 O6 ~& r$ W* g
. @$ Q3 c/ [3 [6 b9 R7 ~3 {
: N# a' y" [" C6 l) f% _5 b
! L+ B3 P, ~, s3 \+ V9 L$ `: r: P

) j, F/ R& X7 z( B6 @. M
" s: o/ M& u: ~# \
: B- u* i' B# w2 B' z
4 Q& k" e* V5 t+ x  j0 r# N

. \; I. w7 S8 f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
) R7 ]4 [" d, I8 {#include <sys/types.h> $ V/ c  K  ^; X3 E
#include <sys/socket.h> ( H: d/ K! T' X1 V, a
#include <unistd.h> 
+ i" y& ?; Q* U, S/ V( g#include <netinet/in.h> / X& H: w# i8 c1 H4 |7 q* s
#include <arpa/inet.h> 
" l# w8 L5 C2 k, e4 v! m9 q#include <string.h> % j& X7 o6 B- q
#include <stdio.h>  
6 l( ^, {: S( I2 a/ G5 h: gint main() {2 c) E8 U% }' Q6 x1 B: {  x
        int sockClient;, a# q. \# h# _" J8 D) o
        struct sockaddr_in addrSrv;
* B6 N% U6 e/ k( b8 R        sockClient = socket(AF_INET,SOCK_DGRAM,0);9 S8 ]3 e' J7 M" C5 R
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");# j& b4 F6 h  f2 L" [& X( C/ G
        addrSrv.sin_family=AF_INET;0 B# M& z& j7 ^  ^
        addrSrv.sin_port=htons(6000);
% n2 n) {4 D8 C5 S        while(1)8 w/ P  h2 b- H8 _: i3 _4 M+ _
        {
+ @3 \2 h- Z: X                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));! L7 `9 x9 t- g6 {% e6 r) p
                sleep(2);  K1 i- V$ h. h. A+ m9 L
        }    
; E. Z8 G! d( C: K& h& j, V        close(sockClient);  " b2 L. F7 b" u  J. g" j
        return 0; 
: O: @/ T% j& G. `* u4 H}+ j) Z5 ?& r# d* A

( ~& P/ T) S. t% t/ K0 J* Y, v; R% F6 C
客户端:
  1. #include <stdio.h> ( Z/ V- _0 a8 s* p/ t' }
  2. #include <sys/types.h> 1 Y. v" u& h' ^& b
  3. #include <sys/socket.h> : }% t$ P$ d% {' u  a7 l1 g
  4. #include <netinet/in.h> : o$ [+ c  p% \. i% t
  5. #include <arpa/inet.h> - ~. a) J' [) M9 A) g
  6. #include <string.h> 0 q. z" ]& ]& X" m
  7. #include <unistd.h> 7 v2 S8 j. t) }$ u
  8. #include <fcntl.h> 
    0 W$ S9 c: f; l# p) H; E2 w0 h
  9. #include <sys/time.h> 0 f" p& z  l5 `2 f
  10. #include <sys/select.h> 5 N7 S& [4 B! p& k5 z1 E
  11. #include <sys/ioctl.h>  4 o' p1 n+ g( s1 j4 D6 b# B$ g) u( X
  12. int main() {6 k9 }: f$ C* n2 _9 m! {
  13.         int sockSrv;
    % o5 Z* f' |- ^5 s1 m0 M5 L: h. H9 O
  14.         struct sockaddr_in addrSrv;
    8 O3 @( B9 H/ B2 y7 G8 `
  15.         int len;
    6 N; m( o+ K4 v, Q- ^7 R
  16.         char recvBuf[100];/ e, s7 p% r4 ^
  17.         scanf("%s",recvBuf);
    7 _) }2 p$ V# y- y/ T3 N
  18.         struct sockaddr_in addrClient;! O. U: s0 k5 `0 L3 f% B
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);9 S; @1 l* e& S0 x" x
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);; A: F2 Z3 ?& |6 a$ D7 B. f
  21.         addrSrv.sin_family = AF_INET;- O: Q) E, W& p) U7 J1 p4 D
  22.         addrSrv.sin_port = htons(6000);: E" @7 A# n( j* n
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    7 W. t% g- G; d; P* b
  24.         len = sizeof(struct sockaddr);
    ) ?6 J- D: I0 M% V5 H. J$ z: R
  25.         memset(recvBuf, 0, 100);
    - C$ T! p3 |9 U$ B
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);3 I8 g  }# {# Z" ?- d
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));- n0 j# g8 j( n" h
  28.         printf("Client data is:%s\n",recvBuf);! ~: H2 R1 R6 S$ O  W
  29.         close(sockSrv);8 _: R) ~1 S# x: o
  30.         return 0;0 X* i5 i4 @( E+ A  Y* `" A& Y
  31. } 
复制代码
4 s7 Y! _- F3 p0 x( }7 v

7 B" ~, g: e& ]$ X3 |! c
" P! z: d( U( p- M' L
; R; P9 P! X6 B' o3 m+ y
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-7-19 17:40 , Processed in 0.055901 second(s), 18 queries .

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