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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:* d: M- n- `* `
  1. #include
    & R& G% ?2 `0 E8 M! D( x6 I$ W- Y
  2. #include9 e: w) H) b; V" ?
  3. #include
    0 H' Q" V! U: g  J$ h
  4. #include
    & O5 f) G8 }& K* e- R
  5. #include
    ! F; B0 E# t9 s! D
  6. #include
    6 T3 F! ~' p! j  U
  7. #include
    $ Y' v1 o9 v4 C! a
  8. #include
复制代码
3 {: c% }8 h7 t# \

- D- W/ K$ c/ d% a# }& h服务器代码如下:+ y0 G. Z2 }7 D1 ^1 b7 q. F
  1. #include, H+ ?7 R3 \3 @# e: _' s! P
  2. #include! Q3 ?1 L0 e. S, J0 |
  3. #include, r% S0 t' A6 \1 S% x2 |, e
  4. #include
    6 d+ ^2 p# {9 }1 E
  5. #include
    ( E, ~% P+ x, D- W8 f; {
  6. #include# A; n; v2 o2 F$ t. @8 `3 o  q
  7. #include
    / P( m9 t- H7 ]6 ]' f+ X8 T
  8. #include
复制代码
) y4 _( {, J1 S, P3 a" L

8 B1 N8 s/ |% O, B9 N
8 R/ u3 j+ A- f4 Q* J( I" l9 G2 F* |

6 N/ s  L+ R! ]* W# P9 B- m  ~* \' Q

* C9 W( ~8 H# _+ C& J7 \  a1 A; E) v0 |' W

1 N* a( k8 G1 y! z, t9 F$ A4 u9 y0 `. ^: A3 s. G. R

& x% w6 t2 d4 f9 A+ A8 _7 |0 j' p
2 s! W) ~8 Q, L/ \) r

3 _" L" x' V8 h% M7 J5 E& Y+ y0 ?& t  Q& x( {* \

! n8 n! E' }7 C/ P# B
$ d4 }- B% C8 Y! k' h) R
" z' ?! J& y( I) `

, x' j! g6 \0 a4 O4 [# s. k
+ h; a  A5 V7 x2 [9 U  E

* o+ E' ^. |& u( h% S& {, ~; N

9 [+ m0 A+ S* ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:$ f1 ^4 W% O7 ?) O1 n
#include <sys/types.h> 3 Q7 l( P6 P( `
#include <sys/socket.h> 
" n* v' _1 r  P( U7 o  ?#include <unistd.h> . N/ |9 h" R* }& h) d- P4 j% U# o
#include <netinet/in.h> ' Q5 ?/ z% k" y0 K. H& ?* n' T
#include <arpa/inet.h> ! t& p: z3 G% R4 y! q
#include <string.h> 
$ u) |5 m  K; q#include <stdio.h>  + H. F, a5 ~- s7 r
int main() {4 D, \: a: D! O
        int sockClient;
: g( v2 o1 _( b% _$ b        struct sockaddr_in addrSrv;! |; X1 M% V* N' E7 a6 c
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
. Z( j2 G2 Z8 O* w        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
+ K+ U  i% v3 _2 k+ n        addrSrv.sin_family=AF_INET;7 ~1 M2 J& G5 j4 j( j
        addrSrv.sin_port=htons(6000);
3 z4 C4 g/ W& r$ z/ u        while(1)
# T" F# P+ B% K0 T        {
; A7 G0 u. F0 t, h  X0 O; m- ^                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
- O" }3 ~) U( T6 `+ B+ t; m. V                sleep(2);  C$ ?; b" W1 N* a  I
        }    
3 V6 F- K" }) h2 b  G# D4 E* t, t        close(sockClient);  
) G- D+ m' I6 s. g& _) M        return 0; : ^: u* S0 z* _0 B
}0 s  N1 z/ Z. ]4 s: w
' d& X; d. G- V. n2 T

7 e# l, C( Z6 d% ]9 ~( \" X9 A客户端:
  1. #include <stdio.h> " m- O' c- f; t5 D5 E+ R2 n
  2. #include <sys/types.h> 
    ! Z, L  y/ H1 ~. J; @
  3. #include <sys/socket.h> 
    6 \0 b7 E  Q* R7 m. k8 ?
  4. #include <netinet/in.h> 
    5 M' U' l0 H0 ~5 B! Y1 z* d
  5. #include <arpa/inet.h> 
    : P4 h( g3 w$ Q
  6. #include <string.h> ) k" n; Y8 Q6 T4 g
  7. #include <unistd.h> # M8 t4 W) ]2 L. I. {$ c
  8. #include <fcntl.h> / [/ p# J3 }; ]! n
  9. #include <sys/time.h> 
    & H6 g0 x5 H- U+ E7 X/ Y
  10. #include <sys/select.h> 
      H1 @8 J  [( n; O+ [7 A8 @0 b
  11. #include <sys/ioctl.h>  
    & F3 b8 _) I8 z, A( [! [4 P: t( |9 @- _
  12. int main() {) L  J1 I- f- I+ b, g$ B
  13.         int sockSrv;; }9 Y  [/ s' j& Q' h( b
  14.         struct sockaddr_in addrSrv;& d+ T2 B. M7 S% h2 B
  15.         int len;
    3 t5 ~' Q# X' W
  16.         char recvBuf[100];+ i: v( O5 {4 v6 b  G  _
  17.         scanf("%s",recvBuf);
    8 l8 c$ V6 M4 z8 _- M; X
  18.         struct sockaddr_in addrClient;
    . G2 a! e" x+ y% p- g# o; m
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    4 c% L& {2 I$ D3 u8 w, M
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    ) s2 f4 K! \6 N9 h: m! b) K9 `4 Y) l
  21.         addrSrv.sin_family = AF_INET;
    # ?" n9 K# N3 B. x; ~8 g( [
  22.         addrSrv.sin_port = htons(6000);
    ; {( o3 j3 v! f. K8 i% o
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));( k+ q) j0 I: [$ w
  24.         len = sizeof(struct sockaddr);
    % a$ @3 H: P) ^' j
  25.         memset(recvBuf, 0, 100);
    7 B# d$ S" z) r* {1 B- J9 G
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    0 M& G: ^+ r! a" l" Y4 `9 C% B
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));; O" m0 V9 u- E, n5 y: n6 \1 f
  28.         printf("Client data is:%s\n",recvBuf);
    4 J; u4 }  s1 d, j
  29.         close(sockSrv);
    4 S1 j$ h+ A  U# K: K) c9 Z
  30.         return 0;
    + z( N9 E( E- u8 p: R
  31. } 
复制代码

+ J% P) G  U2 Q9 F. d, i5 @+ W3 T" b2 k
% `5 q: {$ W- G

$ i# N# B+ o  B" W
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 07:11 , Processed in 0.110707 second(s), 18 queries .

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