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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:- D: H% X, N' ?" B
  1. #include. A- M, T# s+ Y+ y# \, \8 A/ w
  2. #include
      S7 ~7 y; c+ N7 b) x5 D
  3. #include& u9 t4 t; N- W& N& Y
  4. #include+ Q- w5 ^" ~8 F& x$ G/ p* A
  5. #include
    , C8 k# _2 a. Y) m/ a3 L0 w9 t
  6. #include( [! r& }' c" I
  7. #include* s6 Q) i& z2 O8 |
  8. #include
复制代码

! C7 z% D3 D1 ~1 x7 J. B) j& e! B5 ~1 r1 V. W0 F# [! X) q
服务器代码如下:1 T# c3 Z, z$ g; M
  1. #include3 n5 l  N: a+ n1 Q0 V1 s/ a. d
  2. #include  T4 V6 R5 g6 m3 Y$ U6 Q9 }) L
  3. #include
    : P. o, f+ ^/ ~3 V* M) n
  4. #include2 [: _8 {4 q3 g9 W2 w5 S
  5. #include, ^9 `$ @) L0 D6 h
  6. #include0 n% c. [' k) S( M
  7. #include
    1 L' A6 n* T3 {7 ~
  8. #include
复制代码
' q9 s+ ~. P. h7 t
: o& Y2 l% E5 r2 c- T' A, D' `  e9 n9 p

# V) ^6 t! d  k2 T6 ^  N

+ f* g8 V- y- k7 }0 A3 p) j. n/ G* @' A: j$ R5 l

# M- }& Y+ }# x, P2 g  c. p& y* ?* i" Q, g# {, `/ M5 L- F0 N& r

9 X4 m! ~* |4 o" b8 Z6 _, P
, A5 r5 Z* J" y8 ]# a  |
# B! Z* Z" u7 U& E3 S4 Q$ V

' i* z7 G2 ]9 X9 r% Z! p
8 M9 N6 x. o* T8 t* f9 @

: b; k- N% v6 U9 [

" v% e6 W! {1 W! p# [! z9 V5 S0 h# j" L: j" R

4 X" P/ E. y. n7 F7 ]- L- V: a. B
& M0 x# P  J0 {0 A$ t

) G' p9 T0 B1 {4 {
2 P; L. I3 b" U

5 [/ {# l# P" ^; V5 P1 Y: r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
/ f' X& C8 R8 y1 @& a#include <sys/types.h> . v+ b8 u! d$ p! h1 N0 m* H- w
#include <sys/socket.h> 3 n* a) M* j6 n! u5 K5 T
#include <unistd.h> 
# \0 p/ v/ T8 V; B! U#include <netinet/in.h> 6 S" t/ |# h( z4 ]! d3 @# ]
#include <arpa/inet.h> 
. i, N& L8 e1 }4 c& U9 J% x#include <string.h> 
8 Y" o' V# d7 u; W#include <stdio.h>  
& s0 S- s% o! Y2 C, Aint main() {
1 j4 u# P5 x) T        int sockClient;
, y7 e/ f4 n+ O        struct sockaddr_in addrSrv;
5 W7 E6 A* T& [% V# d' [; D        sockClient = socket(AF_INET,SOCK_DGRAM,0);- @/ U0 F; d2 E
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
$ `. O) J9 }. s5 ~/ j        addrSrv.sin_family=AF_INET;
, c% T; n/ _. t9 J: H0 \        addrSrv.sin_port=htons(6000);
8 u2 o% M! Y( {0 @4 L        while(1)
& x6 W8 q1 b2 P/ ~+ x        {  u3 q7 l- q" `) ?4 {
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));$ j5 `: y9 ^% R; o: K2 @/ d
                sleep(2);& F5 S' L8 A, M5 Y" I) ^
        }    
& h5 y0 `2 S' m6 L, E        close(sockClient);  ! O# F7 Q6 r6 z7 v, F: d* o
        return 0; 2 r  R3 K0 s) m$ N7 H9 u
}
/ w2 X/ }* f, q5 i2 N3 }* ^# o, O" e( K" ~$ f
' _: f/ l9 G, w6 Q9 {6 [$ }/ b
客户端:
  1. #include <stdio.h> : `3 K8 u5 X1 Y' {( h
  2. #include <sys/types.h> 
    : F3 @+ k$ M0 m
  3. #include <sys/socket.h> % {; c8 f3 E# m8 g2 }
  4. #include <netinet/in.h> 8 U4 |7 }2 x$ @
  5. #include <arpa/inet.h> ) E$ Y9 D; c. b8 T% r- M
  6. #include <string.h> 4 t) A; [3 o) s7 |. B
  7. #include <unistd.h> . {; E" {. |, b# P$ N/ q) ]8 y
  8. #include <fcntl.h> 3 z9 @" @+ J6 G5 p+ A6 \5 }
  9. #include <sys/time.h> % F) ^/ `; n0 p# v+ J
  10. #include <sys/select.h> , y6 A6 M7 W' T2 P- g
  11. #include <sys/ioctl.h>  
    % F" c, k' x4 s% S' m
  12. int main() {
    : B" z! x8 d! v" v3 x
  13.         int sockSrv;/ h! e* {) E2 Y- D( t
  14.         struct sockaddr_in addrSrv;
    ; [4 U1 D( S- I9 s  r
  15.         int len;$ K) M6 z5 f2 \) _: W
  16.         char recvBuf[100];
    . H5 j4 k' k  ?2 ^
  17.         scanf("%s",recvBuf);
    & C2 }, o3 k/ V6 C4 z, s
  18.         struct sockaddr_in addrClient;. C7 }" u- a2 x8 q7 \
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    + @# X; ^, _* l% X- N- \- w
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);/ u6 Z, l! [. V3 N8 t0 `% F
  21.         addrSrv.sin_family = AF_INET;
    7 P2 I7 R9 R' H
  22.         addrSrv.sin_port = htons(6000);* ^- N1 x8 Q' S9 }4 L
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    : Z+ M8 Y9 n2 O4 G( B
  24.         len = sizeof(struct sockaddr);
    3 l  Y' K; _5 |8 Z6 i: n5 Q
  25.         memset(recvBuf, 0, 100);
    4 w9 l" J* @, B8 C# l
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);/ w. H+ j: e' l
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    ( e7 f0 `* a8 p$ i$ u
  28.         printf("Client data is:%s\n",recvBuf);
    * R, a0 O. J% e) r  c
  29.         close(sockSrv);4 d" e0 B  N, o9 Z
  30.         return 0;
    ) n0 E3 ?5 L* K. S$ m% A
  31. } 
复制代码
; T+ I% b& q7 T$ L% Q5 P2 P

4 [: ~, G- J. V/ H
: x; _, E" u9 H0 J1 x, c2 G" C& v( M3 H
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 01:10 , Processed in 0.118014 second(s), 20 queries .

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