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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
! L  f4 T- L7 B( [. ^
  1. #include: s( i0 w9 E1 L& ?  [2 l+ b4 i
  2. #include& }3 G1 y. ]9 U* ?
  3. #include
    9 ^$ T: j  }3 b  ]1 R  [- d& [
  4. #include
    3 Y2 b) J; n5 o1 ?* a
  5. #include6 \  y9 W) ?# z2 b. v
  6. #include1 p3 ^) |% i& r3 q4 t! B
  7. #include
    1 x9 S. u* N- C0 J, O/ }
  8. #include
复制代码

" V$ _) l  }, t2 g/ F% d* r% D# c6 @2 \! r: Q1 f# Y
服务器代码如下:
4 r# b: f* g* K! u) J9 k5 T, W  U
  1. #include
    : Z# G8 B# b# U' Q% B; f& @
  2. #include. ]; t% w' B' S& G( g+ s- w1 L/ s( @
  3. #include
    % k- e0 q9 n$ ^) b& d8 J2 u
  4. #include: `8 a! u# Q/ l4 g- F7 `3 Q1 R
  5. #include: {) Q' g9 E- s  g6 n2 M
  6. #include
    + H" d1 ]2 O; k8 [2 E; H9 R
  7. #include0 C  k( Z, T5 S! o' @/ ?, g" o
  8. #include
复制代码
  v2 M+ X; _  q4 s

- e: G) S5 s. o
+ S6 @' e0 f5 ~
3 [% E7 f3 I' z

2 s! y- B+ Q6 [, u

6 D, K0 c9 s) q. k$ u% W6 f% y, d
# `0 p9 W7 k- B/ b+ Q- A

' D2 ]6 ^) w7 ]7 ^0 M% V7 f5 z. j. ], D) a$ J; b: J
* E" t- F" s3 k# L4 i
4 f* P; y4 `" v. w
) `2 o; Z, \2 }' i$ o5 ]2 i4 H. R

6 s! s8 A+ |2 U2 v$ f
! O; z+ v3 N, t! O+ ]
" ]9 v! s3 |8 ?: W8 U+ i) \

+ v! ]) B" R+ O( {. G( B+ y) G2 P' C% s2 B  Y
, o6 N. `9 g* F5 O5 r2 U
( u& c( x3 o$ e) w6 t
# M0 ?2 _2 O/ c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
& s% Z  y" ~+ ~* Y0 e#include <sys/types.h> . q4 [9 w' O# f& \% d
#include <sys/socket.h> 
4 }! R0 V* J/ U# B# r#include <unistd.h> ' l; V' d5 A6 E9 }& X, G& s% ~
#include <netinet/in.h> 5 ]7 E" K2 {2 @' q& y
#include <arpa/inet.h> 
( g; P( M6 }% p/ j5 x2 a0 W* p# u5 X% ?#include <string.h> 7 v* q% j, j: R! {! s' D0 x: M
#include <stdio.h>  
, V, A7 V8 v2 b8 Kint main() {
+ R$ f# ~; i8 X4 V$ ^8 f" C5 h  l1 S        int sockClient;
8 q" t3 }* Z1 K: C2 N2 P        struct sockaddr_in addrSrv;
5 u! u, ^$ Q* Y, t6 ?( K: \        sockClient = socket(AF_INET,SOCK_DGRAM,0);1 L/ `# f0 e2 p$ x4 }' l
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");- _1 z: F5 M9 [* V0 w& v% B; ^$ Q
        addrSrv.sin_family=AF_INET;
. P; k' O( c" q9 f$ I7 v. J        addrSrv.sin_port=htons(6000);
8 v& B- f8 W/ }. q7 T        while(1). S- |. Y7 c  O9 V0 y" B
        {/ P& w* Y+ u1 q5 J8 M0 E
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));1 c9 [9 i! v) A  P( H* Z, c
                sleep(2);
2 f7 E* t0 T" _# [        }    + D/ E" R% M+ H1 U/ J
        close(sockClient);  
! w. w9 }3 U$ E" E" [        return 0; ) C9 ]) t5 Y! t4 D3 ^. M1 S& W$ y
}
& v4 }- |5 r. D% s% Q/ x4 `9 J# e: R, {, a  A
! m* p& r+ N: l; [/ Z* b. Q& O8 X
客户端:
  1. #include <stdio.h>   \$ z9 W4 I; I1 X
  2. #include <sys/types.h> 7 |5 m) q  t/ c: C: m, D. j! x/ |0 O
  3. #include <sys/socket.h> 
    8 h& \5 W# T9 B
  4. #include <netinet/in.h> 
    5 c3 x/ v/ l" U2 l+ d
  5. #include <arpa/inet.h> 6 i7 V+ N+ ^7 b+ z" a% f
  6. #include <string.h> 9 J6 S% K( G# d5 @( @9 ?" |
  7. #include <unistd.h> , Y/ j. s% m( n9 \/ H, d  i6 J
  8. #include <fcntl.h> 4 f/ R6 U" t; m. t  ]7 T7 v- D. Q
  9. #include <sys/time.h> - R" ]. S' g* \  t  E# b
  10. #include <sys/select.h> - o" }2 p9 h- p- D/ Q
  11. #include <sys/ioctl.h>  
    ' f' w6 O& V1 _7 P0 Y* {& D1 P
  12. int main() {1 i/ D9 a4 r0 P0 w6 s7 J, ^
  13.         int sockSrv;- [3 i0 w2 K0 m, [
  14.         struct sockaddr_in addrSrv;
    8 O5 m6 B! ?' U
  15.         int len;4 r9 k: g: J! V3 o$ R+ w# Y
  16.         char recvBuf[100];
    - o% h4 z; H' M
  17.         scanf("%s",recvBuf);
    . x' i' ^% S/ R% @
  18.         struct sockaddr_in addrClient;
    3 N) s) h$ x. C" u- u; `$ ?
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);$ k3 X5 o. }% i( v
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    ) T. f8 f! b' Q: {, f
  21.         addrSrv.sin_family = AF_INET;6 {& a2 \5 e+ n  R* M& Q
  22.         addrSrv.sin_port = htons(6000);& O* c" b8 V+ @! H
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));5 R0 i8 A0 O% @. W0 @: [
  24.         len = sizeof(struct sockaddr);
    0 P/ l5 _( }/ F) S4 S
  25.         memset(recvBuf, 0, 100);
    ; E+ D. Y5 }+ D
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    3 ?1 \$ g* H0 r% T# ~% L' D+ s
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));% }) a9 A" o/ X
  28.         printf("Client data is:%s\n",recvBuf);
    5 c$ c/ h+ D' Z9 \
  29.         close(sockSrv);' o0 f( U/ X# }7 j
  30.         return 0;/ t& \" ]1 J  h
  31. } 
复制代码

1 s% ?: P+ d# y$ D. n1 y: _! L) }% J5 O5 n/ a2 L/ D

9 }/ f7 g2 x5 Q. F0 F
& C% x3 {# K1 u& p* B6 \$ q9 m5 }' h
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-19 22:25 , Processed in 0.054943 second(s), 18 queries .

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