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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
客户端代码如下:7 k! f: L: W2 a2 |5 [
  1. #include7 N8 ?" Y% |% h( f" J
  2. #include7 G! k  u" C9 V: q' \  G+ u0 w
  3. #include2 E1 M% t2 S- ~! B$ w  p' [
  4. #include
    $ V7 b  q% e, x6 u; s
  5. #include: Q1 Y3 g+ V  F4 q
  6. #include6 K' J. K1 [! u) }+ x
  7. #include. N, x0 L2 c9 l2 ]' X! z- O7 f* _) P
  8. #include
复制代码

4 V$ M. Q1 q4 t* M- O1 K' u) K9 U% F8 i
服务器代码如下:9 P1 a+ E. b* V8 L% Y. D+ `- w5 d4 a
  1. #include  [4 Y  K7 ?1 A% v) a* X" \, T& B) F
  2. #include
      V8 g, c2 \  ]* k
  3. #include
    6 R, o8 s) i9 N* K
  4. #include
    3 K8 W$ K" A) f2 b" G
  5. #include
    $ p. \* J2 _/ G8 s- o3 F7 X
  6. #include
    ! g2 c* J. q( V1 ^5 n9 a
  7. #include5 \% \6 e  @) E% y! A1 G
  8. #include
复制代码

7 Q5 ?6 Y& x- @8 [6 d1 I0 G$ H4 s# t. I# }6 `' o; j/ U$ X

4 Q! e* N$ P8 y" G  P6 n9 a! y

: _7 h2 p( o6 c. A- U
4 S; U$ y9 ^4 S& w5 x) Y' l
- ^0 Q0 i1 E( k  N& {9 j
/ p1 y" y8 R: e# m( z  K

  C1 d# q" A5 D( T" I$ m) u3 `2 G* w" E1 }' l
1 v. B6 Q4 f# P- ~

, [, q3 v6 E7 l, f, F

* P$ R' Q7 q! {, J
, d3 e+ f, S9 u1 L! [

. b. z- n! Q# O/ J! E1 H5 j- _$ X/ R' l4 i5 f* P
1 O' r2 N( ]% u! }+ Z

# z2 a1 \1 v) h! @1 l0 y4 {

# e( z4 ?1 n. k1 ^4 T5 B9 v  [3 x: i% j  X* i6 d+ K8 |
7 h4 m) I1 a6 y2 Z6 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:- y, U( [6 @: {' W, p" d
#include <sys/types.h> 
( z6 W; O/ v  y: N; f#include <sys/socket.h> 
8 J% \& [7 b1 }. V- Z3 Z. f#include <unistd.h> 
7 {0 C( H! s! D5 V( C( a) v* j#include <netinet/in.h> 
8 Q/ D! P& A% Z5 ?- a0 ?+ `#include <arpa/inet.h> # K, z4 z. a; B$ L9 L) `) t3 e) {
#include <string.h> ; s6 d% N& y! n* i& A6 o1 B
#include <stdio.h>  6 a, |& g7 i5 O, k# }* ]% E
int main() {
3 ^& R& C( h8 e1 N. m! }; |0 h) o4 l" j6 x        int sockClient;
4 E/ k' y) \; y0 z* A: ^        struct sockaddr_in addrSrv;
8 x  V) ]- _. g  v) C8 D  Q5 A( _        sockClient = socket(AF_INET,SOCK_DGRAM,0);: b9 a6 a, ~7 ]- N% a. H5 h
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");5 k" y& H7 _$ C& v  W( f' \( @
        addrSrv.sin_family=AF_INET;- s) P- e3 ]8 {. B+ F
        addrSrv.sin_port=htons(6000);
4 ]0 O( N0 U# d4 @* g1 Q2 i4 q0 P4 \        while(1)
  b+ ?* i/ O  e( t- d3 `' u        {* a; i4 h3 {- p1 G! T
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
6 s. U! q( L% h9 [  ^' l/ I5 w; G                sleep(2);3 [1 n$ l7 S& [7 x5 M8 h
        }    
6 e) X' q0 H3 n. s        close(sockClient);  + K7 ?0 k  J. E; e# n5 E
        return 0; % N9 n. F) y- ~; j
}
& V) M7 v  e8 V# q) [; _' ?  w7 e$ k, ^0 p/ T3 s

4 t0 r% ]! q1 M% B客户端:
  1. #include <stdio.h> 
    4 o' p1 F. R: E4 z0 e/ @
  2. #include <sys/types.h> 8 b0 Z9 I4 F' N" a7 l) A3 V
  3. #include <sys/socket.h> 
    , G6 l- n& ?; H; {! \  N' o( Q8 a
  4. #include <netinet/in.h> $ J% i, n$ h8 O
  5. #include <arpa/inet.h> , j2 L* |9 J6 o1 E
  6. #include <string.h> 7 J. h6 j% R) a- T3 ]4 G8 d% D0 z6 h
  7. #include <unistd.h> 8 {# Z3 M! U' W- u
  8. #include <fcntl.h> 
      R& I+ o$ @8 S) i# Y2 i; V
  9. #include <sys/time.h> 6 q. q5 x/ _& f
  10. #include <sys/select.h> 0 ]3 F2 ?) z1 j$ V5 e
  11. #include <sys/ioctl.h>  
    ; ~5 H* [3 ?$ v5 c4 Q5 c2 t1 G
  12. int main() {
    - F1 \: C$ o" p
  13.         int sockSrv;
    4 X+ K9 d1 `" B4 Q) ?7 P
  14.         struct sockaddr_in addrSrv;
    8 {; J5 h% ]6 }( X5 ~& u# q% F
  15.         int len;+ `( |5 Y# s  i% E5 U( O
  16.         char recvBuf[100];$ j1 ?0 Y& I$ l/ F; T1 ^! E
  17.         scanf("%s",recvBuf);
    0 A6 c! C3 l' E6 t7 g5 u) }
  18.         struct sockaddr_in addrClient;
    4 b; P$ }- ?! S" B9 `& D% r6 F- V. r
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
      Q' \- g7 a1 }% i' d# K8 D3 y% x
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);. d/ h3 Q- c! e3 I: k% V
  21.         addrSrv.sin_family = AF_INET;
    . ~) I/ @; `2 I
  22.         addrSrv.sin_port = htons(6000);
    0 |& d# B* Z6 b8 x# p) {
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    1 C" v7 @/ |# Y$ D/ ?$ N
  24.         len = sizeof(struct sockaddr);4 N) w! `: r/ {! v' D) ?
  25.         memset(recvBuf, 0, 100);
    ) ^4 L6 l; x' @( S1 k/ q1 |0 n
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);! e( o+ ?: {& A6 h2 x
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));6 c8 [3 Q5 a9 o9 z$ \6 ^' b
  28.         printf("Client data is:%s\n",recvBuf);
    * C1 X1 L3 m8 v- m) K
  29.         close(sockSrv);
    * E5 @+ e& w" _7 v) x+ C
  30.         return 0;
      p, A: F( I; _; x# T- e
  31. } 
复制代码
$ V; q2 O5 I9 X+ x" a. Y

2 ~  p7 h, F% R3 D3 ^
5 O3 n% _' W& ^; D8 T+ N6 P3 O& k6 s
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 14:41 , Processed in 0.055822 second(s), 19 queries .

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