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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
客户端代码如下:* y$ ~( L$ o& o0 e3 P- i
  1. #include% ^" I# `! }7 M3 }% X3 m8 Y6 J
  2. #include7 h& V, ]" ]. y1 A
  3. #include  T& R+ |4 Z: |; P
  4. #include
    1 `9 ^/ X8 j$ h$ k& c  h
  5. #include
    % y5 l0 A2 X4 I( J8 U
  6. #include
      F5 |/ L6 B( e$ v
  7. #include' v0 w3 p$ _1 T
  8. #include
复制代码

( {' T2 j  _! Z: R9 K% n5 i- b1 x7 ~5 j4 j$ A) e4 _* ?) w- p' `
服务器代码如下:8 j& R6 n7 ?) _
  1. #include
    ; [) U) ]8 h7 a7 K
  2. #include+ I9 i' q, A; n: \( U3 _
  3. #include  B0 }% q. q" g, J3 ?& @9 B. j4 G$ X2 {
  4. #include; Z' b- {4 n) T% n: a+ V
  5. #include8 G8 ^) S, b; r+ u; E$ C9 `
  6. #include
    ; f0 d( u+ \, |: z/ x# B% {0 Z
  7. #include( i& b5 w5 R, r* I, j- d
  8. #include
复制代码
5 }" D! g$ z) W6 p4 ~; h& V' ^6 p! \

( T# j5 O# T. O% c8 m+ r, |! U5 u3 L0 R1 e9 D
4 E' p% C0 e7 T, B9 G
/ ^7 k7 j7 d) u! J7 M' G

* H2 i* _8 x; }1 ]- q, G
) y1 j  u  V5 J5 c% ^

) i8 k* J# A# B! A: E& K5 Z0 s9 n+ U, i, D+ I( R, N) V! j

/ [! X/ k  r, O) u( R! P
( S, `/ J: n$ l* ~/ r' z$ ^/ O, c

) U2 R5 {% N8 N, M2 @. U! T/ u  P9 V7 d

) j5 l3 D) G7 e& l4 {; H
4 v6 c4 l. C# \/ R$ K

1 Q4 ?0 ^% i8 t" W, l8 R1 g3 C9 J
. U* N/ c' h- B8 z( u

, ~/ @. S. Z/ t" B1 C* A
6 [& F. r( |! V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
0 p5 }/ h2 i$ e7 h  F#include <sys/types.h> 
7 i; `7 ?* o3 o7 Y5 u# L#include <sys/socket.h> 1 d% B: H$ n) B/ n- `+ I3 U4 o
#include <unistd.h> 
7 W( a2 _/ G' E* d" D#include <netinet/in.h> & f  T0 b3 a1 `' `; }2 l
#include <arpa/inet.h> ; n& T5 M6 G/ _: X) T
#include <string.h> 9 x" j# g' M  L
#include <stdio.h>    T# M$ v# c( _7 u- [  {1 e) a
int main() {. r& d, g9 f* \8 h
        int sockClient;
, o! i& A' F) a: ~/ z; t& `% t1 S        struct sockaddr_in addrSrv;% x+ d: b& j. y0 U7 ^2 h
        sockClient = socket(AF_INET,SOCK_DGRAM,0);+ _2 j. p8 N+ h# J% m
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");  M' J2 S2 R+ r. I' i
        addrSrv.sin_family=AF_INET;
# h6 M1 |2 S. E7 X# N' _        addrSrv.sin_port=htons(6000);/ j( b, r$ g5 S
        while(1)
1 p# N7 P! S* @% M- C$ c1 l$ `        {
& `- \) i5 H$ u; R$ j                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));$ r. I- \* @0 ~/ D/ ~8 Y, Z' W
                sleep(2);2 J3 d( t* T; e+ M, Z) u
        }    9 `- B9 X- s& E- U9 L6 y6 C5 I
        close(sockClient);  , D; X+ K, Z; \* W
        return 0; 3 O1 H" L) j2 d% ~5 O, T
}5 z6 [1 G  {9 k& G+ ~  y. F
7 n1 K0 g6 Q, H- q0 w! V+ _& B$ ~+ w0 k
4 d0 K/ M9 C$ Q" z: p' F; T
客户端:
  1. #include <stdio.h> 
    . Q# @8 |9 l1 J: M
  2. #include <sys/types.h> 
    1 z) C8 H/ T: x8 E
  3. #include <sys/socket.h> 
    ! B) p/ p. j6 h. l: S
  4. #include <netinet/in.h> 
    7 o2 N1 _% J% h  {( J# M/ B
  5. #include <arpa/inet.h> 
    ' \! F, W4 n/ X, _6 p( V
  6. #include <string.h> : E; x$ K7 P/ g  t6 f) u! U
  7. #include <unistd.h> 
    + e/ J% h4 m' _- R: b* Q9 P# M
  8. #include <fcntl.h> 0 s4 p7 U$ a' k4 i0 t( E: S
  9. #include <sys/time.h> / p7 ]% f. d, Z, P0 T' _) }
  10. #include <sys/select.h> 
    9 g. e2 u7 h  i4 ^  J9 h
  11. #include <sys/ioctl.h>  ; A7 v$ P0 c; P2 ^5 Y( R7 z* R8 j$ X4 t, Z
  12. int main() {, ^. B% H$ s" }# d' v0 f
  13.         int sockSrv;
    " n) E0 W$ c8 l6 D7 W' T% _, Y
  14.         struct sockaddr_in addrSrv;
    7 I, i- f; C/ z* P0 l
  15.         int len;
    + T/ S$ x6 Z" x: t5 v+ M
  16.         char recvBuf[100];! }; e- l  V$ c) B: K
  17.         scanf("%s",recvBuf);
    , s: M2 t1 ~3 K; }6 Q: I( `
  18.         struct sockaddr_in addrClient;
    4 b  i- k! [% l: `
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);2 c  R7 U7 m1 \4 ?3 ~' \
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    ' O3 `' |+ U4 S' {+ t
  21.         addrSrv.sin_family = AF_INET;
    6 E- S  G2 |( s1 N* y
  22.         addrSrv.sin_port = htons(6000);
    4 R" G% I, B8 n3 E! D0 ]" p
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));' g& H& d3 N+ j. i, h
  24.         len = sizeof(struct sockaddr);( G$ S" {# g, ]9 u
  25.         memset(recvBuf, 0, 100);+ g/ Z/ x- f9 X* q  t. b8 ?  N
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    0 p5 M" v) O7 f4 Y9 J
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    5 v  q& w. t9 I( q. T
  28.         printf("Client data is:%s\n",recvBuf);
    7 I; r1 l5 }6 C; V' S' k
  29.         close(sockSrv);7 Z) S- {" E1 S  F3 H
  30.         return 0;! T5 ]1 B, W" L. }- w* {
  31. } 
复制代码
( j5 z; d8 j; Q, ?

  W/ X1 Y) U- X& V& w: `  K0 p. v  u" i0 Z4 H
% g! e  G# u: Y+ {
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 14:46 , Processed in 0.107374 second(s), 19 queries .

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