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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:* s* B2 d  U- e
  1. #include
    & X, g1 P" i/ R% d  Z0 H( M" b- S
  2. #include( N+ r7 d' Y" S# t! c
  3. #include# K- L! t2 Y0 Y/ U3 E
  4. #include5 i) g. Y& R* S
  5. #include
    $ H$ Q; t$ S& T4 ^/ E
  6. #include- @! I. q+ O' Z2 [) l4 ?2 @8 y+ g
  7. #include
    , v, v$ d. p0 l' _
  8. #include
复制代码

: H3 F: E8 V  M
, b& v2 \! V6 E% w+ o. U+ V服务器代码如下:
3 W, Q0 [3 q4 J4 D% v( L4 ]
  1. #include# F) H+ x( x# O3 `1 B( k% V
  2. #include
    3 k8 {: c7 p4 G0 b2 b
  3. #include" e: I5 B! S  R" T' P
  4. #include$ C4 B5 p7 I" U
  5. #include
      X8 q6 ?& V2 W; \' C6 O7 R, K
  6. #include; j0 }  R8 r! p# T; t' ]
  7. #include% B+ f. h# E0 _, T; N" j, |
  8. #include
复制代码
7 x5 I$ @% J3 |. F1 b* h% U$ t2 Q2 b

# D4 V5 g2 v4 d6 r8 k2 @7 b8 U3 x

# L1 V# s0 p* a1 ?5 O( M* F: I) `9 |

1 r9 O& H9 |7 @) C% ~9 I( z. o' a. h! V% \
+ }; N& j2 ~( }: ~% K
9 }% S, p3 g+ H' v4 G( r
0 G* V' i8 {; Q! R1 E8 @6 U

' M9 L2 i$ Z( ^% E6 J$ e# p

: N  s. ~- }$ {3 d5 X+ C  E& Q
$ ?6 p! _  e( |# U

+ p! _- l# h( B! E) B4 J  `! q: @* h" a! F7 z4 W$ ?

8 I: [1 f" ?' {1 I0 J* H" u& v8 h8 O9 N, m+ p% Z0 }) R* g

# g4 h! {$ y0 x% \* `% d' T
( E' t- B+ U5 m  w

% p6 L" ?4 n4 l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 显示全部楼层
服务端:
. U3 v; p8 X# d3 J+ g9 R5 A#include <sys/types.h> $ Q: t( K6 j- H! N- ~* W8 B
#include <sys/socket.h> 
( @- O' B* \* s, h- Q  f2 r#include <unistd.h> $ _& T1 d5 l$ L6 l3 r6 s
#include <netinet/in.h> 5 [9 v% A! O7 ^0 `6 ^5 H
#include <arpa/inet.h> 7 c) |! S& z1 d; r: v, e6 J! h) p" o! K
#include <string.h> 
$ t1 e# L* ]8 H#include <stdio.h>  
+ x& U0 X3 w7 _5 [7 {, Kint main() {2 y( V, D! |0 \
        int sockClient;! a: C/ n+ r$ y& o
        struct sockaddr_in addrSrv;
; S  l" K, ~+ k7 ~1 w6 E1 Y0 V        sockClient = socket(AF_INET,SOCK_DGRAM,0);" e8 r5 B# H3 }% a0 _
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
7 v5 q. a: E  u% z/ a9 Y- }        addrSrv.sin_family=AF_INET;3 I5 Y* I( @7 v& P- o
        addrSrv.sin_port=htons(6000);
, ~# e$ b* m6 x! o        while(1)
& t- r7 E8 w5 j7 P/ ?, a        {- u! u( r, a' j$ u3 d- V
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
6 M( _8 }' n/ l# H4 Y3 \. K                sleep(2);
! l4 ^7 M4 D# E; W/ f8 H' Y1 @        }    1 {" h( _8 r/ b. A/ m$ l
        close(sockClient);  
  D( e6 ^  ~, J        return 0; # H/ B* E9 [! t0 t! Q+ X3 I$ m0 J5 l
}& f. X: j; @" k% o; P% D. y. E  N

8 Q8 d! c! N. n$ V4 \. z( M
, L8 b0 g5 W7 b+ J" ]9 ?& b1 P- n# Q客户端:
  1. #include <stdio.h> 1 l1 S* f2 o) |. F" `
  2. #include <sys/types.h> 0 A. J3 h; ?; J
  3. #include <sys/socket.h> 6 }5 Z  I% n8 b; ^- q* ?  U: j
  4. #include <netinet/in.h> % c% U! w9 R+ V' |3 M
  5. #include <arpa/inet.h> 
    % ^* q8 i0 S' \+ `
  6. #include <string.h> 
    " ^" U' \+ ^- E$ j; Y1 ^) m, l
  7. #include <unistd.h> 
    . }9 Q3 ]  K- J' p+ [
  8. #include <fcntl.h> 
    3 m8 ~1 J& h) M& B  n; v& N
  9. #include <sys/time.h> ; ~: \+ T4 a: ]" G8 p  i9 g
  10. #include <sys/select.h> 
    $ c4 q) v* r  I9 |  Y5 X" M
  11. #include <sys/ioctl.h>  
    7 ~9 b' c4 u3 M
  12. int main() {/ k2 @$ ^# u: ^
  13.         int sockSrv;
    , l2 U# {9 |! e1 z3 \- k% f
  14.         struct sockaddr_in addrSrv;$ k1 e5 l: }- I. Y
  15.         int len;' v4 r( a7 ^) D/ Y/ E2 _" T6 \
  16.         char recvBuf[100];, H0 L" H& P9 f' w9 ^  [. ]. _6 U2 r
  17.         scanf("%s",recvBuf);
    % L+ B% d  {! k$ x! n% h
  18.         struct sockaddr_in addrClient;
    % u3 d5 ~- z8 d
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    - a' Y+ R7 ^% W' h  c
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    5 [% I4 N! b$ w
  21.         addrSrv.sin_family = AF_INET;
    ' y% z! C* ^- V8 D4 k, `% H7 O
  22.         addrSrv.sin_port = htons(6000);
    2 t# t/ m. Z8 q2 I1 K' o% K. d
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    ! h, j5 u9 ~+ W/ E* ~
  24.         len = sizeof(struct sockaddr);* M5 u& }* A- K, N) o9 k
  25.         memset(recvBuf, 0, 100);2 u; _9 ~0 U* E. t- R; r8 J3 E4 c
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    , G0 h$ ]2 E4 o5 ~# p
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    + Q# P" {. [1 i/ M+ I3 X
  28.         printf("Client data is:%s\n",recvBuf);; n3 @9 R# `3 h8 c# z* N3 |' n0 V
  29.         close(sockSrv);
    7 s8 k/ A% V/ S( N
  30.         return 0;* p1 u) f$ T. h$ R9 X' F. c/ ~
  31. } 
复制代码
3 q& F/ R. q( W- @- C( q

* o0 U0 X7 o( O* n1 Q# R1 \* a: i: H6 n6 d# Q

( Z. ^8 B! }' i1 M1 J
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-16 23:29 , Processed in 0.119212 second(s), 18 queries .

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