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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
( s# e% [7 i9 K; @
  1. #include. s! C  @$ R9 C9 @
  2. #include8 r, E8 ]& |9 Q/ c1 ^% r. y
  3. #include5 ^5 c, e: c: R. z7 u; L6 p0 e7 d
  4. #include
    5 }2 }: L# i! `
  5. #include. y2 E% G$ S  y! s- F8 t( `+ c5 b1 C
  6. #include' j" K( s$ F$ h2 X6 i5 u$ X
  7. #include$ h4 }: V8 d4 l, z4 Z& h1 A# h
  8. #include
复制代码

# S! d- T* Q- m9 Y$ l/ Y& x5 t, s' k
服务器代码如下:
, |9 f- g0 Z5 m9 a1 `
  1. #include  r# h$ N- E2 L$ J$ L; g! @1 L
  2. #include
    & C  ^/ P1 i1 D; K8 @2 O4 @
  3. #include3 F; n7 U  M) j1 B! Q
  4. #include4 p, c" I; p4 Z0 n  p
  5. #include+ _. M" O: \" t+ |  y# b
  6. #include
    7 `$ b) G- N- u* g' n# f, J, \
  7. #include7 \: D/ L  [; i7 o/ d
  8. #include
复制代码

4 w' t2 [( U' ~1 O2 v5 u( W% b! u
0 A5 j7 F' A, z5 O! t
& i  \  B) p5 A2 l

- `/ |+ M% y) {7 v# g* _$ w+ z# b! U1 i) }. @
. {: r2 F0 x7 ]+ k( p; f
9 m3 o; Z' P7 ]7 m$ h
4 C% X8 ?" u7 p9 C

" {! d$ c  o* C7 h& p* U& `

5 V4 O$ N# k: Z; O, L  t! @% j# q0 ?9 _1 M4 ]2 J5 r
4 V# y) M# ~+ R5 W
- Y$ l) m* j3 {! U2 ]
4 n& A6 o9 w/ Z

/ B2 c  s- A+ R, C

, [& Y! r! k& O0 I9 B* ?
$ k: y$ H# V6 z# s
) ^6 w+ b1 P0 W& J' A6 _' r
& b, ~! Z& U4 D% \
8 q6 x9 R: b3 T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
3 O3 r- d# m6 Q. J) P#include <sys/types.h> 
- @7 ]3 b1 i0 x#include <sys/socket.h> ! n. j$ s' h4 |+ J4 H
#include <unistd.h> . j5 N* {8 M' H+ g0 f( g
#include <netinet/in.h> + U4 I3 r! _" }- }5 ^
#include <arpa/inet.h> 
& m# b$ S7 p- r1 m/ P#include <string.h> " C! |# ]9 g) u3 K) r% J+ P6 [
#include <stdio.h>  6 b7 ^' K$ E0 L0 V  @
int main() {: m3 ~( o, T/ j& n( C. W
        int sockClient;
  i. M3 _" Y. @$ k        struct sockaddr_in addrSrv;
3 ]) J; h9 R  `! H$ [! x/ p* \        sockClient = socket(AF_INET,SOCK_DGRAM,0);
- D6 D' [: `1 S        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");' R( {) p. i2 v" m2 b) @; I/ R
        addrSrv.sin_family=AF_INET;0 X8 |4 J" }1 k$ \1 x$ O: d+ O
        addrSrv.sin_port=htons(6000);/ x$ y+ X! P. Q# y
        while(1)2 F# r- `  |' D7 P; k
        {" [0 R, D: c1 Z3 d1 S
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));# u9 ?2 p, R+ c9 g4 L* M# \7 E. J4 D4 d
                sleep(2);7 U) Q. G% ~5 x% s' \# u
        }    
/ c/ H/ N* k3 b: y        close(sockClient);  ) Y  ^) O5 S: `1 `" F
        return 0; 
% X: k) Z7 Z2 p9 d: ^) z}- j) B8 _0 [, s

' ^: @! a, y/ a# o9 G
3 E2 y) w+ g5 v1 B: c客户端:
  1. #include <stdio.h> 
    ) u% Q# J$ X  p- \/ _" i, U/ b
  2. #include <sys/types.h> , [' J* i$ C$ k* C) ^
  3. #include <sys/socket.h> 
    + k- Z: y( G) t3 T& d  Y) {
  4. #include <netinet/in.h> $ R" P2 [$ o, g3 s' i/ ?
  5. #include <arpa/inet.h> # [" i8 w, D0 H2 K2 w
  6. #include <string.h> 
    ' O4 H( b0 @" F! J* v
  7. #include <unistd.h> : f5 q6 K# n0 ^9 q
  8. #include <fcntl.h> 5 a; J. _. h; l2 H1 J
  9. #include <sys/time.h> 5 p; i8 v2 F9 _6 F
  10. #include <sys/select.h> / N. z6 u% O- [
  11. #include <sys/ioctl.h>  
    ! R  D. t9 f& G+ ^
  12. int main() {$ S' d* B+ W, m/ [/ e
  13.         int sockSrv;( c+ [1 A9 x- }" F. s1 ?
  14.         struct sockaddr_in addrSrv;- X" o  X- a9 g' Z6 |% Y
  15.         int len;$ ?1 _3 S% G* b* G
  16.         char recvBuf[100];! w, z# i+ U0 E5 J4 [  b
  17.         scanf("%s",recvBuf);) E. R9 \. x6 N. C5 m/ G
  18.         struct sockaddr_in addrClient;: ?/ W: k  q8 I3 f
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);3 F! G3 N- q' y3 ?* |
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);! k% y$ g8 m" c$ Z$ r9 c
  21.         addrSrv.sin_family = AF_INET;
    " K. ?2 q$ ~: W; U# X. ]
  22.         addrSrv.sin_port = htons(6000);8 }, Z8 f3 |' X) z1 S
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    ; B( c# ^, a2 s/ Q
  24.         len = sizeof(struct sockaddr);0 Q0 O/ m! I% M. i7 K
  25.         memset(recvBuf, 0, 100);6 T- B7 J" N0 e3 E. h
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    3 z6 L1 V. q* `0 {4 Q% G  r
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));/ L* K! z- U0 o% t
  28.         printf("Client data is:%s\n",recvBuf);+ j5 F; a8 g4 g& s
  29.         close(sockSrv);2 ~6 U0 y: l7 E/ y2 l  [- R
  30.         return 0;& m) m6 j& o+ ?
  31. } 
复制代码

+ w7 t* I: G5 Y9 u* v6 y  Y7 C$ k
* N2 J7 L) @. T* g4 L% a- i- p' |
6 Z/ s. i- g9 y) ^3 h
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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