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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:. q7 e" L* e, u! k& x1 [
  1. #include
    3 U4 J' V- [6 G0 o* n* H7 e3 H, I, Z
  2. #include
    9 f$ A% c% P- _. b: z8 i
  3. #include- l, W( S3 A' C2 k2 M4 l! X  _
  4. #include, b+ f# _' W2 s9 u& ^8 g
  5. #include1 h4 u% v/ d+ i; U6 ?
  6. #include  Q0 T8 j# \) l/ ^  w) s
  7. #include
    : m6 u% r" [3 ~+ h" F% |/ V
  8. #include
复制代码

3 D- H# c3 ?7 o" C" d! _/ w( D3 j& L
服务器代码如下:+ N3 H7 G& j* C8 t+ V! p. `$ n/ x
  1. #include
    0 @4 B: a& [& C/ W9 I/ g
  2. #include
    , p* H+ F5 P5 W8 ?* p. n
  3. #include
    : \: h# I! O( W" {5 [' g) c
  4. #include
    ! U+ {) |9 b/ F6 B3 t9 P" J
  5. #include
    ' c, \2 V& {6 |5 f; a2 f
  6. #include' T; l$ n8 k) T6 G! F  m) u
  7. #include& r, x5 ^# G0 K- n" E# `
  8. #include
复制代码

/ L) g; \$ V+ m9 y. R2 w. u% c8 e0 S& N. k4 X# I- @
# n( C  G$ P1 x: x

8 f2 P  M2 a' |6 U) F# e+ K2 h" g( Q3 o5 x9 S
' i% a: Q& p* f* B

- z1 f% \6 I; R: E( r+ X- ?

* d& k5 N) c9 ~$ U9 o9 e7 s  x: ~: `) E

+ n9 P2 H) i$ D; Y- G5 k' t& `: ^! d3 C* h4 V& W/ N
+ R1 D; V; K  ?* ~% P+ d
0 W) h- z" ]' ^* Y3 G
# [6 Z% N5 k* \6 h% s. I
: S0 [) j& n1 l' [5 @) v

! r7 k- `+ \+ K6 W( k$ f3 A, I3 m' }3 g4 s% ~9 b

/ l/ z) j: X/ u" T/ C& T( c4 z& |$ j2 S6 J4 x* m
- o+ P* m3 D: e: o% N0 w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:' K. e) M- c1 F# U* y' T) f, z
#include <sys/types.h> 
, ~" r. ]; j) c9 v3 d#include <sys/socket.h> 
/ `) z0 F4 E4 ^" j5 f6 B. ^#include <unistd.h> 
* z2 H, U& W! N: W$ m#include <netinet/in.h> 
1 m; w( c5 f. q2 t. C0 A( B#include <arpa/inet.h> 6 w8 E  Z1 c# P4 Z% z
#include <string.h> 0 B; Z  ]. {8 W3 d7 E
#include <stdio.h>  * G& _; g, Y2 C' i& z2 B
int main() {% H, y6 t/ s# e6 {8 Q, I( ?, v
        int sockClient;
! ]- p: j7 @2 P+ D+ e& ]$ z$ b# `        struct sockaddr_in addrSrv;
0 S8 d8 m7 ?# i$ [1 c$ y        sockClient = socket(AF_INET,SOCK_DGRAM,0);
. X' G: X/ g! L# j0 H4 Q        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
* ]/ r  n* c" B7 I) D        addrSrv.sin_family=AF_INET;& {. t+ p/ W1 q/ f8 W4 U: D/ W$ q
        addrSrv.sin_port=htons(6000);, K3 A+ j/ i" J0 l
        while(1)
% z' o8 v) O2 l7 a5 H        {
/ U0 w( J( J4 b% i, O                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
$ R5 E; w( e7 d: X5 g' c                sleep(2);5 e2 w8 {$ k1 T, l$ e
        }    6 q+ V" `( w) ^, v
        close(sockClient);    k+ \/ y# n: s- Z2 i
        return 0; 2 i% @' ?( A7 {: b  K
}2 r/ j4 j9 c: |0 c+ Y. d8 g
  }- H+ q1 Q# [

( ?+ \3 `; G9 {4 D& M) X4 U客户端:
  1. #include <stdio.h> 
    $ ^4 ^% [/ D% g% W  J1 V" T  _
  2. #include <sys/types.h> 
    6 |* }/ d4 R" L* Z8 T/ @1 }
  3. #include <sys/socket.h> # r/ L$ V: V6 k) M2 i
  4. #include <netinet/in.h> 
    7 D  O7 h# `( q* ^4 v
  5. #include <arpa/inet.h> 6 U4 o. k' N' `9 {4 d
  6. #include <string.h> 
    ; u  E! h. n' G& }+ B
  7. #include <unistd.h> 9 g9 ?% l/ T5 G* A2 J7 H9 q$ a
  8. #include <fcntl.h> 5 a1 `$ B' L* f! _4 m
  9. #include <sys/time.h> 
    . P9 ^% Q1 l- a
  10. #include <sys/select.h> 
    ( \3 E( }4 n: A: r. I2 _6 c
  11. #include <sys/ioctl.h>  / C- }  U! k3 L+ G, Q+ Y7 m3 M
  12. int main() {0 E7 j# m$ Y+ n5 j' t' Y
  13.         int sockSrv;
    . X3 Y4 i; E# {" ^4 S
  14.         struct sockaddr_in addrSrv;
    4 A4 f2 H4 S3 Q$ l' L) ]
  15.         int len;
      j5 Q; G$ ~+ b6 s+ k: M
  16.         char recvBuf[100];
    : a3 s# c( y) v& L- P4 t
  17.         scanf("%s",recvBuf);
    1 O! w9 H4 y6 r
  18.         struct sockaddr_in addrClient;$ p+ a  G; Y$ |2 R# N
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);. g  g/ h% s% w$ ^- }' I
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    & e! ?3 @8 x# o
  21.         addrSrv.sin_family = AF_INET;
    ) a: W5 c4 z% F, Y  v
  22.         addrSrv.sin_port = htons(6000);! y& C& \. h! k, O! a- g* T6 W- Z
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));- h& g0 C& k1 J. i4 D
  24.         len = sizeof(struct sockaddr);
    9 |6 L7 O0 u0 m# i" k- d. T
  25.         memset(recvBuf, 0, 100);; U2 T6 R. q: y2 K( q$ B
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);' v+ ~$ y0 O: d: c* I- Y
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    5 x' k7 }- M, {1 K
  28.         printf("Client data is:%s\n",recvBuf);
    ( L3 n1 h& w+ p% G
  29.         close(sockSrv);. i* J8 C- v4 }+ B. G& h3 G7 M
  30.         return 0;6 v& Z1 F- W" D$ F: s
  31. } 
复制代码

+ Z$ O/ J' d2 B4 t9 D
9 Q3 H+ e) ?! {. n* ^( `; K7 k; t0 g8 f% q2 o2 c% I
2 `/ z; m: e# [& X- \5 W
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-5-2 11:49 , Processed in 0.066683 second(s), 18 queries .

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