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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
0 L: v1 g3 q# k
  1. #include% D1 J1 i8 \( q! j% T4 N% r
  2. #include6 z2 g/ u6 T3 X
  3. #include
    : p: b3 P( q5 e7 L( B
  4. #include
    6 v. I) R& g1 K4 w; F2 F( X' A
  5. #include
    % a: b) b$ I1 Z3 ?+ u: E
  6. #include
    8 T" p2 E1 U$ b/ R( G0 z: ]
  7. #include; j' D1 W; X# i* K0 c% m) ^  H
  8. #include
复制代码
$ ?" o0 m8 A: \6 c  F3 E- N
0 @% v! a2 {9 Z4 L  u( i4 J7 U
服务器代码如下:  u  s$ h, e! q0 D; p
  1. #include$ x2 p6 C7 ^2 W; Z) f
  2. #include
    - g+ C1 Q7 R; ]! R& [, p: x
  3. #include, R* y2 D; m* P8 ~. p( e+ b
  4. #include" E. ^) j/ m* q9 h4 z5 h7 P
  5. #include, K7 Q- v: y. L
  6. #include6 ]7 F2 v  s: `  d- P
  7. #include
    * y, Y" S0 {( F4 K
  8. #include
复制代码

8 l; Z2 R4 |8 b6 C" Q( i/ e3 W' ^3 W% I) U: l/ v# ]$ ]
$ z/ E/ A2 c/ q  \% E: g+ o" H, Y
3 M! x: M8 l. _1 g) E5 C- O

: `' w+ s  J, v, l6 e# W

* C$ ]6 g7 E$ s: h. R2 ^  J6 r1 x  p9 I# R5 z/ G
9 l/ \/ n% z) [$ M9 i' s- H

  F9 {- G* D5 p# k7 C! h8 n
+ |  C0 p4 r0 K
0 \- T; X% M. d# O0 I1 J' l: ~( {, B

4 Y2 X' b4 V* e: h. A: a' e: _1 b* P
* X1 k) N' J8 K* m& k2 o

/ y* |" p- M! _/ I- r
3 I: O' V/ `/ F' N! G+ H, P

0 Q0 F$ s4 c* ?* g/ b
- D# p5 @4 z4 E0 m$ p

9 Y: d' Y. S, t! J: Z' K# h& Y
. t4 r' N2 B0 e: }% l2 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:" G" C' I/ S; D& G
#include <sys/types.h> ) D% R/ ]: f; A! H/ ?
#include <sys/socket.h> + I0 W$ t. {3 y2 B1 s- V
#include <unistd.h> 
7 a8 e: r/ E1 S* t" ]( o  A#include <netinet/in.h> ) S0 x% {7 F) C& I, Y$ ^5 Q4 W3 f8 s
#include <arpa/inet.h> ( o8 w' v: i) V" p7 g
#include <string.h> 0 c- k! j- ?" f3 z
#include <stdio.h>  + _, G% r& C0 N& ]
int main() {9 ^* d0 e8 \! d6 I, c2 k
        int sockClient;8 P  V( X/ ^' n( I
        struct sockaddr_in addrSrv;
" W7 I9 i. m! K# Z$ z; L9 d        sockClient = socket(AF_INET,SOCK_DGRAM,0);, }! }# J9 s8 v" t) E
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");& a' B) f/ ?1 k  E3 z' E
        addrSrv.sin_family=AF_INET;! l  A6 _1 Q- a3 [/ T# V% k
        addrSrv.sin_port=htons(6000);8 i5 h1 i( S+ f
        while(1)
4 ]2 g+ Z; S% S' ^0 \+ ]6 s. H        {0 g) c- N2 L% O! a
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));* I6 k/ Q' @  M0 U4 @3 d4 s
                sleep(2);
1 B9 m1 u! P) M, X; `  W        }    % _  c4 v: F( ~% U/ B
        close(sockClient);  
9 m7 n: t0 n# v; B        return 0; 
( R9 t/ v, X# T}
4 R/ N, S, v- M: Z1 z& k) \% }4 N5 w7 d

* r2 h4 {# o. ~" ?* Y4 Q" S客户端:
  1. #include <stdio.h> 5 L8 a. r. J. `
  2. #include <sys/types.h> 
    ; j6 o" U$ j# e; H- T
  3. #include <sys/socket.h> 
    & A; V9 O* S& H* p+ y
  4. #include <netinet/in.h>   Q  X, E) I* l& Q. X" C7 O9 i
  5. #include <arpa/inet.h> # x! m8 B: t# q7 Z: l6 }5 t* A
  6. #include <string.h> " M6 F! v1 k2 ?7 ?$ L* t9 P
  7. #include <unistd.h> - H$ r/ t' \  [9 Q0 J
  8. #include <fcntl.h> 
    2 c1 y# V; m/ |! U% x7 G( a
  9. #include <sys/time.h> 
    9 ^5 O/ Z$ I2 R6 `4 `
  10. #include <sys/select.h> 
    9 f* w5 o, p" }
  11. #include <sys/ioctl.h>  
    % ?: o6 u, k0 A" b5 {8 v$ z
  12. int main() {
    1 J# L: @! W) N5 x5 u9 f
  13.         int sockSrv;( \( u, k' c2 [' ?5 s. j" i+ d
  14.         struct sockaddr_in addrSrv;; j. q7 c& `6 ?0 G& H8 e; Z
  15.         int len;# J' s" N& A; D; D% R, @- f
  16.         char recvBuf[100];# }, @8 g& \6 f4 G$ n
  17.         scanf("%s",recvBuf);" \0 ?" Z/ x. h1 Z/ V; P
  18.         struct sockaddr_in addrClient;
    ' w1 B3 e4 D) E( n+ |% e5 u
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    4 H3 h2 e- H0 c8 g
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    & T, ~6 |: K3 a6 ]$ N
  21.         addrSrv.sin_family = AF_INET;
    : Q) {. \/ ~1 Y$ N
  22.         addrSrv.sin_port = htons(6000);3 a3 W( B4 A; [# \1 S9 Z7 H! X
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));; D1 |; Z, E7 [, J- N
  24.         len = sizeof(struct sockaddr);
      ^0 r5 N8 x% F- K9 R
  25.         memset(recvBuf, 0, 100);
    5 ~9 B$ D& C' H
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);6 L+ N1 P5 ]1 w" X% R' |7 F9 v# R
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));+ y7 U# Y/ F3 c0 h4 f# B# D6 J' }
  28.         printf("Client data is:%s\n",recvBuf);
    ; q; j9 P7 ^" ^* {7 @
  29.         close(sockSrv);# g$ h! r% t. i2 l9 q& [+ u
  30.         return 0;  |/ ~( ^5 P. T' v( ]" X
  31. } 
复制代码
0 C% z/ Q2 K2 V5 F
7 k- Z% s! v" y. u

( q% v4 T$ g3 T, L
" i7 ?; O1 x$ n, \6 L$ s/ z
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-4-19 22:24 , Processed in 0.127435 second(s), 20 queries .

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