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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:* h! C# N0 h# g& r3 v3 d8 A! d6 O2 g( F
  1. #include
    % M. P( N$ @7 ]
  2. #include
    2 ]) X  o$ b, i5 e7 T
  3. #include
    . {2 b; A) T- `. v
  4. #include
    ' }; m5 s* `% X( Z  B
  5. #include: u" T6 p3 F3 d* v8 X; z
  6. #include
    - p9 W- o- X1 J
  7. #include- B$ c8 c. a- W- U
  8. #include
复制代码

  m0 ]! U. V; [9 M2 A$ T" \) n# ~
$ K7 \" U% l/ e5 Y9 b7 T' t' J& C2 [: R服务器代码如下:2 V; }8 c1 s5 i  b) s9 g3 F
  1. #include
    # U# O8 w6 x' \7 ]7 F3 F0 e
  2. #include
    5 X9 i4 n* y( x9 Y" g( _8 q
  3. #include
    ! `" u+ ^/ K, i" g& X, E2 \
  4. #include
    8 x- X# j7 ]  n+ ]  h$ k& A
  5. #include/ [5 F6 A! x3 n+ I# B  b% U9 R# i" a
  6. #include( J0 U8 c* G6 F& |& l  u3 D
  7. #include, j# B8 l/ u% V7 u3 i# l
  8. #include
复制代码
) S9 T, u9 p) P+ h  a
( W5 ?9 I/ z, }2 ]4 c! _# U, p8 x
4 D* A. j) H. l# D" u% B: i
+ p3 W8 s9 ^, B* c) ]1 [
: t1 K9 D. o! }* a- ~( a
5 _5 S, B  ~9 s5 ~2 `4 p

3 ~$ n! N1 n- b- g: S
. c" b( D5 t1 [# n6 s1 @& c# L3 m
- u. x6 d$ f* F+ V/ `  u8 `
9 v" d8 X8 P: F8 h% A+ v1 |
- Y( R* ^7 k& Q9 n& J; b7 O

( b$ c! K# i! V4 K
  g, J: F# x7 w7 r

# m; g& p- K% _& w
( v: k8 E# q+ {: s

* u1 m8 \3 W' B$ J9 s; _- D" q' ?! p; q

2 P5 o' p3 x9 U3 f/ g5 Y  D
% `7 c- V7 k' O8 `$ ^

9 O  l: w. _2 c% P4 Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:! C6 _/ d8 Z/ \, ~# N# R7 t" j
#include <sys/types.h> ' t4 K; f" u* C1 B
#include <sys/socket.h> 
! f/ B2 I" B+ U& {#include <unistd.h> " Z5 T+ p8 P2 n3 m# D. A' j. }
#include <netinet/in.h> 
4 G" Q. Z- {) L4 `0 l3 s#include <arpa/inet.h> 
3 r+ w$ [1 O' B! v4 s#include <string.h> , X# d# g/ c4 P' |
#include <stdio.h>  8 _) ~% G  w! t/ [8 w5 r* z8 G! Y
int main() {' v0 R; M  C5 R/ ~& b
        int sockClient;
% H+ x7 f0 I* d% M2 E9 R        struct sockaddr_in addrSrv;
* D1 y. F( l/ Z5 Z        sockClient = socket(AF_INET,SOCK_DGRAM,0);* G/ Z( r* A+ R* V) I% w
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
$ ?/ m6 ]" _1 c        addrSrv.sin_family=AF_INET;: Z: R/ I2 T% h: e* s9 q
        addrSrv.sin_port=htons(6000);3 K7 O  f3 R7 v1 o  p) x/ B5 S* {
        while(1)
3 o( i' r# O6 s$ _% D        {
' D" L2 j( _, _4 T" i" k                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
! A+ z9 e) b/ ^/ g                sleep(2);$ r( g. T9 F/ Z
        }    
1 i9 L, T' X0 d# \        close(sockClient);  ' J$ K9 \( |& G
        return 0; + V* c- g* q' W
}
# ]+ p1 g9 u. C4 j/ q* c) K2 v. D1 `# s3 P6 K$ `, N
& y+ w, _" G7 I$ C- R, i
客户端:
  1. #include <stdio.h> $ z; }% \  G) B9 L" A  u2 ~
  2. #include <sys/types.h> 
    , \+ Z! S& T# V- Z2 S% }5 t
  3. #include <sys/socket.h> 
    . _; F5 {+ ]' ~. q9 B, H% \
  4. #include <netinet/in.h> , V: B$ i5 y) I+ h) u  X
  5. #include <arpa/inet.h> 
    1 n0 V6 T/ F& Z5 C/ r  b
  6. #include <string.h> 1 [. f8 V+ X1 v8 ]* F; F
  7. #include <unistd.h> 
    - Y0 j1 A0 R) l- |2 \
  8. #include <fcntl.h> ( O( i7 Y2 s/ ~5 K4 h$ G
  9. #include <sys/time.h> 
    % v3 U1 ?' C5 i( y4 [
  10. #include <sys/select.h> 
    7 f. H( h1 E0 ]% m- [& \- C* z
  11. #include <sys/ioctl.h>  - d1 s3 K0 }3 d: h
  12. int main() {+ x' c7 ~& h7 _$ b2 A7 N) t2 q  R
  13.         int sockSrv;
    : n: ?/ l' J5 v% ^- _" N( g( V
  14.         struct sockaddr_in addrSrv;6 h" M! k7 F. a" y) |' _
  15.         int len;. A6 h3 T. @+ ~6 T# F8 X* O
  16.         char recvBuf[100];$ A  z- U9 o1 W0 t7 E  j
  17.         scanf("%s",recvBuf);$ ]* Z3 M+ y& ?- \% ]7 H7 F2 K( i
  18.         struct sockaddr_in addrClient;
    - x" L, s6 S/ I9 C
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);7 W! y, v$ x3 [8 a( }2 h% j3 _
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    ; X8 k7 l( m( W% g! j; T) g3 |: E
  21.         addrSrv.sin_family = AF_INET;
    ( T1 E$ U, S& p6 S
  22.         addrSrv.sin_port = htons(6000);
    , E) b! o0 T; y) Z
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    2 |: G7 l$ e) r1 E
  24.         len = sizeof(struct sockaddr);
    : ^1 y- x7 @9 `, M# a$ G
  25.         memset(recvBuf, 0, 100);
    / y* M) Y5 p2 ]' O- Y- y9 s! J2 b
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    & L; N9 X3 B1 k. r7 q0 }, H
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));# {! w" y3 y9 r5 V
  28.         printf("Client data is:%s\n",recvBuf);* W& K' X2 V* Z' [7 d! O4 l
  29.         close(sockSrv);) K% G, d  j/ x  L
  30.         return 0;& q1 M- k; T! n! ~  [+ m
  31. } 
复制代码

- Z" v- ]2 x& ~( \7 ^, y$ Q$ v' L
2 s# Q4 U5 j$ B( O' ]& y' Y5 \+ K( `9 Y/ _4 P

& J0 t) |- t7 w6 ^
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-4 11:47 , Processed in 0.057826 second(s), 18 queries .

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