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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
6 p# L  N$ y4 ^4 N
  1. #include
    : m+ u0 \+ t. l
  2. #include* ^% C. v3 `" S) }; ~
  3. #include
    1 y) q0 o3 k- m( w  Q
  4. #include, |8 {& l/ S* A" D
  5. #include
    " s: p6 f# g$ l" q- D# \9 W
  6. #include8 _9 f- {1 h' f, w* F
  7. #include
    / ?9 ~9 n/ u" |/ R
  8. #include
复制代码
9 t7 m2 ]: L0 [! S

! l( L/ _- I: b5 S+ J- u9 H' s# J服务器代码如下:
8 q! L1 G( Q, G1 P
  1. #include/ z! D9 H1 l# G* o" }. \  v
  2. #include! i' E- a- e8 \. c) T  A
  3. #include6 V& w+ [* ~7 H
  4. #include
    8 @2 y( t1 K$ q
  5. #include
    6 M* _# r$ `8 C
  6. #include: @/ P4 [/ A9 J0 u( X! N4 y/ z( m2 `
  7. #include
    7 Y0 B7 I- y2 S9 z
  8. #include
复制代码

2 B" B8 D- G) A. W5 L4 Q# n1 ^: l5 x2 M7 V3 }( b& S3 b

" a8 J: C' g: z* x; I

/ \4 b* ]& h8 s- {6 I, Z
. Z/ Q1 Q% K8 |5 V9 O8 C# c8 s

, Z8 [* H: G. J/ F/ [6 G) n' K; [8 _7 A3 \8 E

& \3 L! ^1 A% }6 W
8 C% T5 d8 I' V- ?7 B

, z; M% J  G+ k( v$ f* V8 J& ~% {  N* p4 y

+ I2 b" ^/ D' Z6 W$ a( k7 h  b, L, ]( ?

5 z% x' ?# R/ W4 c( p9 n: |2 c. j% M, [% f; o. J) q

% L: D* H* q/ D2 b
7 E) C7 u% q  W8 }- n. k

) p9 S# q  ]& ?, z& A. \7 G: M$ b) W% c1 s' C
1 y1 `3 j+ x- ^& Z+ c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:+ j" f  F7 a" N: n0 c3 S
#include <sys/types.h> + E5 [/ \* ?- T% I- B* P
#include <sys/socket.h> 
) S0 Z( m3 Z# k+ @#include <unistd.h> 
: N. F3 V5 _) v5 ?/ H/ q2 S+ I6 E#include <netinet/in.h> 
+ ~9 c' q) L/ C7 h# v$ S#include <arpa/inet.h> 
# c% B5 v+ V: L2 j2 g% P5 f  B" C#include <string.h> 
% I  v# ?. W% T9 x. m  B% t' \#include <stdio.h>  1 z( j9 w' M, V/ ^  I% ~
int main() {; ~0 `8 \1 V/ q6 X) O. `5 V4 P
        int sockClient;
/ Z0 u/ z5 N$ }7 H6 c        struct sockaddr_in addrSrv;
0 J! [3 ~6 D6 {: N8 `# `        sockClient = socket(AF_INET,SOCK_DGRAM,0);# f# y" D2 t' A
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
0 n  S' z$ w6 E8 t: s4 f2 S; b' H        addrSrv.sin_family=AF_INET;
9 f% H' ~! `) p7 L2 p9 l# z        addrSrv.sin_port=htons(6000);+ Q6 r; Z. B: H% q
        while(1)/ w) U, C! w# C  j7 i8 B2 B: @
        {
+ h1 F& J3 Z) C                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));/ O* z2 R2 r$ ~# x
                sleep(2);3 @5 \7 H% z% r" ^0 D+ |) d" \
        }    
4 B- O7 N' L2 V5 G        close(sockClient);  ( s- P+ s; e& t
        return 0; / l- H7 @* O3 T7 S8 A
}' g; G$ V0 ]8 D3 n

) Z* A7 z4 m3 p0 }) `5 ^, Y5 W5 S, D1 A/ u: H6 w% c+ ^
客户端:
  1. #include <stdio.h> ( l' q; y% y/ ?% L
  2. #include <sys/types.h> 
    2 S$ |( }  j5 k9 ~) J' D% Y  e$ V
  3. #include <sys/socket.h> 
    ! U- ?" W  v  d/ b4 U4 p
  4. #include <netinet/in.h> 
    0 b* k2 v! ~3 Z; o* _: p' ]( C
  5. #include <arpa/inet.h> . B( w5 b3 E) c1 t+ m
  6. #include <string.h> 4 h4 [! z3 R+ `! Q$ R  B# \0 A9 M
  7. #include <unistd.h> 
    2 |- X/ z( Q; v7 k3 b- ?1 ]
  8. #include <fcntl.h> 
    6 U5 J: C- ~# x
  9. #include <sys/time.h> 1 P, t5 n  z$ k3 E( E) f
  10. #include <sys/select.h> ! ^2 W- y- H8 e% F8 D. N- S
  11. #include <sys/ioctl.h>  
    % v, k. p1 j# ?4 p3 d& C% E
  12. int main() {
    & \8 Z, {* @0 F8 P! W# P
  13.         int sockSrv;
    % E- A, _( H/ N3 }+ V' c! g
  14.         struct sockaddr_in addrSrv;7 A+ `, f# G! N* @  z/ w( |! H
  15.         int len;7 N. Z8 u# v- n  ?6 k* `
  16.         char recvBuf[100];, W. I% `# a$ y  S( U
  17.         scanf("%s",recvBuf);' B) ]- ?) `* [% a% K
  18.         struct sockaddr_in addrClient;
    : E) J  A1 s- p7 @* N4 o/ h
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);. M% T* L: K$ l. t+ n' k$ \! T
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);7 T7 j3 x0 H! N6 P0 i6 I: [3 k
  21.         addrSrv.sin_family = AF_INET;
    4 G6 ~& A2 U6 v
  22.         addrSrv.sin_port = htons(6000);2 X3 k  Q+ e  w2 m* e5 v- B
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));% o1 r7 N6 X2 \. m( q4 m% W
  24.         len = sizeof(struct sockaddr);
    - i6 f+ d* j' n) u5 l, R
  25.         memset(recvBuf, 0, 100);5 I2 N. U2 n2 ]" j
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    ' R; b7 _1 Q9 {3 ]
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    & S: S# v: D  _* g9 i6 b, p
  28.         printf("Client data is:%s\n",recvBuf);
    1 a  c4 D5 p; W( F! T: a
  29.         close(sockSrv);
    . w+ ^) m# i, \9 N8 H
  30.         return 0;: A3 q' O8 ?* L- v, e* A4 @+ Z
  31. } 
复制代码

- V: l$ f* E" ~3 P
7 @7 q8 F. y% f2 q7 ^$ V4 j5 H# d( e% E$ [6 P

2 Q. m# Q+ f: V) j5 c
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-5-2 13:38 , Processed in 0.047702 second(s), 19 queries .

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