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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
客户端代码如下:9 Z( |' N6 P" M
  1. #include
    . m4 k  o/ E( S
  2. #include
    9 y. R2 ^; ]6 s3 j* L
  3. #include* H* r, @- z6 D
  4. #include
    % R! p. X3 G  L+ k
  5. #include
    6 ]2 @. ?5 m7 V% o6 P7 n
  6. #include
    + g! c1 I* J2 o; V
  7. #include
    ) s+ q; x& B1 Q7 u9 |8 _
  8. #include
复制代码

! Y' s* b5 [" L1 R- E, h) g8 ?1 Y* ?6 y  ^4 a/ ~% o. N: E( w/ F
服务器代码如下:
0 b1 c/ d+ Z' ~6 i0 ~0 E+ X# c: b- d
  1. #include
    . J& @" d6 E/ T+ h( Z# A
  2. #include
    : L4 G4 p5 I+ X
  3. #include
    : ^; K  n- V  W* A( N2 K
  4. #include
    : `! ]+ g0 X5 b
  5. #include
    5 ^, R: [; p8 y" K0 p3 f6 n6 {% @
  6. #include
    1 I. J: K" ^5 }3 F+ M4 T$ F( U6 O  [* e
  7. #include
    4 }% b1 i0 b: u, r
  8. #include
复制代码

0 Q3 d9 @1 t4 `2 \) x* f7 h' u' r

0 h( l/ e- y0 R3 h* H; ?1 J

% V% y# l+ M4 k4 W$ B! X5 o+ b- h7 m

, w3 X+ B5 u; r- ]6 o. @' K5 v+ [$ _! H% |- b$ ?$ T

& Z! ?* V( O3 g& c2 t9 Y* D8 ~$ t) b' K

% Z& @  Z; q; q, v3 U& B, l) a: @* h% X  e6 J5 b1 X
2 f$ u( b( f1 ]0 w

8 z! x! B% L4 N; `9 g$ ?) ?1 i6 E
# A, c; R: p7 ^1 [0 i7 H
0 U6 m1 P5 V- w) Z6 [2 o- O
5 m, l& @! N6 ?+ {, h

1 @9 O/ S0 U/ S/ I* l5 S2 c' n' Z

, J5 A5 H( M# v2 d
: X+ m! W4 [$ c: K* ?% ^) [( }* x

, G0 u  D5 e" }; {8 S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:7 O1 X0 d' }9 _" Q2 Y& a
#include <sys/types.h> * S* k$ z/ K* D! Q) u" f. \! b
#include <sys/socket.h> 
( D9 T! w0 }& p6 [& c#include <unistd.h> 
, `& ]  K" C8 d#include <netinet/in.h> - o+ j: f9 U, C/ u3 z% e; Z8 a7 B
#include <arpa/inet.h> 
0 W  ~) P, G# M$ [) V#include <string.h> $ {8 }/ J. ?9 `5 W5 R
#include <stdio.h>  . q. z/ d  t9 I& \( X. d$ a
int main() {
3 u- M) X: ]4 `        int sockClient;
- ?- e0 r: E9 \. ?& ~" P" W& g( ~        struct sockaddr_in addrSrv;5 u: c: `4 k; A! g" L% L3 P
        sockClient = socket(AF_INET,SOCK_DGRAM,0);) [* u7 e1 S+ E6 u$ v. J
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
2 S2 i4 k$ b9 \+ M        addrSrv.sin_family=AF_INET;3 m3 P; A/ `, F" P$ a
        addrSrv.sin_port=htons(6000);
/ B" ^; B+ |/ U3 @        while(1)
) l2 v! }) F5 M; N" J2 E        {9 ?# g; R+ v& [
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
$ X+ P6 K1 z! T6 R: c/ S                sleep(2);
$ K' _1 A. R8 i) Q& `8 p2 h6 i        }    9 J' }7 L; U0 S* G5 P  L: k5 ^
        close(sockClient);  ( Y$ E. E8 _, C7 ~" j( \% S
        return 0; 4 L0 L" c  \6 W
}5 N+ }3 d% m7 d3 n- e3 ^0 E+ W

' g1 O) Q8 E6 S+ \  ^+ N: I! x  J' w  V' L( a2 P, [
客户端:
  1. #include <stdio.h> 
    - A  m) _- q  Z2 g! g
  2. #include <sys/types.h> 
    ( Q7 I6 X" v' v2 `5 O7 g
  3. #include <sys/socket.h> 
    1 m/ v, i* a+ N
  4. #include <netinet/in.h> 2 ]: n! {# I! ?3 ^
  5. #include <arpa/inet.h> 0 `$ @: w' T7 x) Q6 G
  6. #include <string.h> 
    " P0 [* ~, x1 _' _9 r% [
  7. #include <unistd.h> 6 {- V4 z& g, Q" N* L
  8. #include <fcntl.h> + L2 z3 H4 Z/ k; M$ A6 q
  9. #include <sys/time.h> 
    6 X* R8 q2 j; w& B) _5 U+ W' R
  10. #include <sys/select.h>   |! n+ b. ^. u- b: k4 @
  11. #include <sys/ioctl.h>  ; c( I: B6 S& J) b( q% f5 z8 ?
  12. int main() {
    * c- K: d$ u6 ^4 M3 w
  13.         int sockSrv;
    * L" r- F9 H( G. t( h; f* B1 t
  14.         struct sockaddr_in addrSrv;
    + t$ o, |; }" o6 Q, f# ]7 e4 @
  15.         int len;
    ) Q( |" Z8 \' @; W& w
  16.         char recvBuf[100];2 b% q  I* W/ `' m9 `
  17.         scanf("%s",recvBuf);
    ' r4 S4 ?  G3 z6 _8 X0 G
  18.         struct sockaddr_in addrClient;. W; q( f7 f& `% c" K* u
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ; a9 Q, J. N# h
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);( l; t& e9 G# [+ {
  21.         addrSrv.sin_family = AF_INET;
    ( {& R$ o5 f! ~# V
  22.         addrSrv.sin_port = htons(6000);
    ' x/ X' ^* `& a! |6 L) I
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    & \7 I5 `1 r/ O9 _# B' a
  24.         len = sizeof(struct sockaddr);
    1 t0 e: Z1 o; c7 d% m* M, ^- i
  25.         memset(recvBuf, 0, 100);
    8 Q& \' M* d4 d% `: z0 |
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    ) b! \4 K0 D2 Q
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));* T, h) Q% {( P- z
  28.         printf("Client data is:%s\n",recvBuf);
    4 p, v# Y3 e/ U7 z
  29.         close(sockSrv);
    4 Z- y6 ^' {% i$ D' ?0 U
  30.         return 0;' Y; ^. x3 [$ [8 g$ U
  31. } 
复制代码

1 p0 j# g5 ^) |
% Z2 ?8 S  L9 }  [7 P$ G) ~( y
' Z! T+ l* p4 ^2 m/ n1 ]& Y
" z8 z, {9 u3 `' w$ Q* i. [
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-4-30 22:19 , Processed in 0.057905 second(s), 19 queries .

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