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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:. ]6 p! J1 d% i
  1. #include
    ' P" U' s( Y1 G, |. U9 r
  2. #include% G! N: D* r- w8 k4 O0 r
  3. #include
    1 `- F5 ]5 t5 r) p
  4. #include% w& t* P8 f( ^* ]8 \7 u
  5. #include
    5 a8 V' R8 i  |1 c0 p% P
  6. #include
    # g) E7 o& G. ]+ i% ~) X( L
  7. #include
    ; c& W1 j# z0 `7 m, _
  8. #include
复制代码
" {# t! `  b) n2 t' V

' k1 d0 {2 i7 D' z) L, o+ ^9 _2 e服务器代码如下:
' Z7 W$ X1 N' Y4 Y  y
  1. #include
    5 K* p/ s5 P8 I7 \
  2. #include' P# p, ]6 Y) Q
  3. #include
    ) c+ d* [7 u& K; c
  4. #include
    9 e* k9 G; n4 ~, j  a( E/ j/ n
  5. #include
    / E# H: b, \0 ^5 a! K
  6. #include
    7 G% ~1 V* @$ @' ?- ^) ]  N
  7. #include5 |! f% E4 l% }( V0 S, z% L
  8. #include
复制代码
+ b) Z. |5 q  w& K8 c

! O( N# K. S0 b* l) }6 y, a7 I. P8 ~. W

) l% \4 V5 z4 u2 V
% \  R9 r9 L# w3 J, Z0 U# g% T
2 q) [/ A8 P6 x( b

: ~1 M1 w; a% H: b
) _- I+ |7 @' t1 `5 M0 ^

! C/ u3 L0 Q3 n- m7 ~3 L  q

+ U' I( z8 l& n. H, y/ g8 r$ a/ v/ s, a* v6 S; O
# p1 A# \* L/ m2 s
: ]( N3 K6 z1 X' u8 b3 x
9 s: {7 I# ?3 L; a
& j0 U1 _& [: z' o3 z
" w. d6 M/ G* S5 b  R
" q; E. H, p: r
7 t" V: x6 B6 s. F$ Z; _8 _  S

: _; p+ U) P' z) V' @- ~# B4 q, I
( F! H, {/ Q* F) s5 y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:$ O! C/ O% \0 N) s% O* O
#include <sys/types.h> 
$ _+ [4 {4 H$ b/ I4 U#include <sys/socket.h> ) ~/ u) F' c  I: y1 D5 D8 x
#include <unistd.h> ( V6 [! E5 b  g! n' N- i
#include <netinet/in.h> 
5 p) s6 o/ r/ }8 x: R#include <arpa/inet.h>   d& S+ D- |& Q* ^
#include <string.h> 
( ]/ ^( F& |$ c# P$ |2 Q" D3 S#include <stdio.h>  
; V6 N) ^% H  P+ h' I/ yint main() {
& n* Z" S) i, ~& M        int sockClient;
8 N# W) P' `  K9 u- W        struct sockaddr_in addrSrv;
8 \  d! S9 [5 c2 H8 ~: Y1 h        sockClient = socket(AF_INET,SOCK_DGRAM,0);
  F+ j. z5 C" @5 P3 f7 r        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");3 b4 O9 a0 ^- ]
        addrSrv.sin_family=AF_INET;' `1 s+ Y/ z' q8 P) P( E0 D8 q
        addrSrv.sin_port=htons(6000);+ Q5 s' |/ \- e0 g+ h
        while(1)
! A3 b" E3 B! i        {- V) c7 G, E! t) r# L
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));5 l. b( H7 `, C* e/ U2 [
                sleep(2);
0 t8 r& X7 w  |7 a  U1 W        }    
# u3 u" d. |2 P1 h+ B        close(sockClient);  ! m/ I* [' j, Z4 d
        return 0; 
* ~: ^: k0 t; d3 k4 a}9 E7 p+ L5 M) u
* N- k! O5 |1 @! {# r
. S8 j$ Z' ?' h& L
客户端:
  1. #include <stdio.h> 
    0 v) B2 p# Q- C# V! E8 z# `) @
  2. #include <sys/types.h> 
    . v1 q" f" F/ t# |7 B5 p
  3. #include <sys/socket.h> 
    " }. @$ u9 J! s2 S) w
  4. #include <netinet/in.h> : Z$ _8 b# }/ d2 [* @
  5. #include <arpa/inet.h> 
    . O  H3 W, @$ ?
  6. #include <string.h> 3 W( H6 q% Q$ P# h) d
  7. #include <unistd.h> * B: m! W  D0 `9 J% b, c
  8. #include <fcntl.h> 
    $ r7 t" Z: V, F# C; c& C
  9. #include <sys/time.h> 
    5 A, f$ I+ R7 t  S1 |' D- Z
  10. #include <sys/select.h> ( c$ l  E9 e  m* F4 x2 w# I
  11. #include <sys/ioctl.h>  
    / k9 m& d' r* c
  12. int main() {
      a4 a" N, Q- k, k" P
  13.         int sockSrv;
    : n9 p) g0 i$ a$ t
  14.         struct sockaddr_in addrSrv;
    1 ~7 w. [. J0 `: g: v
  15.         int len;
      G( n+ O, k' W5 ~% J# s* R7 S9 o
  16.         char recvBuf[100];, R/ G0 K9 z9 [9 x+ A1 U" o
  17.         scanf("%s",recvBuf);! e( ~- \9 g9 W2 h6 q
  18.         struct sockaddr_in addrClient;
    . N: s- B3 O* D: f* w6 s, H6 M
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ; E8 U# P/ `7 h: n
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);) \- L+ ]9 A  F) |8 I1 J
  21.         addrSrv.sin_family = AF_INET;
    * D8 t- Z- p/ Y6 u2 A# W; q) W! u
  22.         addrSrv.sin_port = htons(6000);
    % U/ x$ a& h# J9 B* k0 F
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));5 [* c7 z+ c0 e& U" S; }) e
  24.         len = sizeof(struct sockaddr);+ K% H3 {7 p$ G/ {0 P
  25.         memset(recvBuf, 0, 100);7 V( f, b, R  S3 r
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    5 o9 n8 z. V7 `! a
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    ' d2 a8 s% A8 n- |7 I& G
  28.         printf("Client data is:%s\n",recvBuf);
    4 B4 }; R3 N; Q3 k, y7 `
  29.         close(sockSrv);
    4 L  n& p7 T1 L& I
  30.         return 0;
    0 y: t4 R- N+ h& r
  31. } 
复制代码
5 h- s- {4 B/ E1 S1 G

- J& @4 z% H7 x# F6 j$ u  q$ G  L: B! B2 C/ q! R- }7 B
0 x" W6 \' z4 L, h5 O
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-16 17:08 , Processed in 0.070599 second(s), 19 queries .

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