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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
6 a4 F" i9 w, B  W
  1. #include
    ( Q1 ]- ?: X' {" \/ j
  2. #include
    6 `0 X2 H3 A8 S. T; _1 q. ]9 o2 m8 f
  3. #include( [- {; r7 G9 p4 w) }1 E# G, E
  4. #include
    - {3 v. W, m0 M& [% j
  5. #include
    3 B& C% B6 o+ D
  6. #include3 z* x4 g6 ~! p8 g2 O7 ~
  7. #include5 G7 {+ c. W" R' _
  8. #include
复制代码
# j) R) g& T/ `1 y" S
' W$ P; J0 Z6 W# \5 R: H5 ?8 @
服务器代码如下:* o9 I+ c; W8 f; z  a7 s; y) E
  1. #include  @/ T8 V1 b1 e
  2. #include2 V; `8 v. y; {4 B) {" G
  3. #include) n' h& Q0 G. @
  4. #include. d1 l$ Y5 V% e# `: h  X
  5. #include
    / J1 V9 M. d1 f" W6 z/ t$ j: K/ n
  6. #include
    . P. B3 E/ n# a$ F+ x
  7. #include& e5 a; |. m% q$ o! G% T' _$ g* Y
  8. #include
复制代码
; e7 p# s+ ~8 Q7 B/ h' d% S' o1 ~

  e4 v; i9 ]1 A* e6 h3 Z/ p8 m
9 k  Y3 l( d2 X' y$ Q! X

; M0 w! s+ O' y) F$ r1 _6 E5 w( d- ]% F: p
; o, |( i7 W0 ]$ B& B# ]% e% z$ z3 h- k

; i" \- \7 l$ ]% l, M& v
7 r3 \2 E) H! X3 d

, z2 x# \1 M' A. p; h$ t+ y( F  w! w
) ?1 L& N  U: H4 }! K* l5 x0 s9 g

5 `9 E/ M- P( C% R. S

) E. ~! N: A% j0 W3 }& g$ E: j! T9 ~7 ~
+ X3 B" M. Q+ A% ?  }3 x$ H8 w

# d$ Y7 g4 G  Q5 g* \  W* _- s7 @

, E- x" N9 e% I
4 I+ B1 m) Q, |4 t' o4 _, n  W
7 w  {- _' k9 V3 B0 j3 n3 t

+ _+ }  f- _) L$ t3 \/ n& {( B2 b
% g% P: U, g4 }/ f" {/ e8 a3 F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
* b* D6 C7 K3 y0 c% P#include <sys/types.h> 
' o; Y" T- F3 u: |; G#include <sys/socket.h> 
, Z9 |" {6 I& \# y#include <unistd.h> 2 p* D9 r3 }9 @4 t& |, i) Y
#include <netinet/in.h> " g/ Y" p3 a. f) Z; A7 h+ m
#include <arpa/inet.h> 
4 X& [: F$ O2 W; l#include <string.h> 
9 |7 Y2 U5 v0 C, Z0 w5 v4 A. G: W#include <stdio.h>    Z- G  i1 J" w/ k7 s
int main() {$ h/ `0 A1 d; }  C2 ?0 T0 k9 ]
        int sockClient;
* U9 _1 c9 P  n& F( {% ]' l        struct sockaddr_in addrSrv;
5 A( Y: ^3 E0 b/ |        sockClient = socket(AF_INET,SOCK_DGRAM,0);
1 F' n, m) Q% d: I' `- o' G        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
$ \5 C$ C8 H1 b        addrSrv.sin_family=AF_INET;
" u+ |8 {! Y1 C' q2 _9 j        addrSrv.sin_port=htons(6000);
" c% l! l( w5 D# |8 X9 a- s9 L$ n        while(1)& l5 y% {( C+ r- C6 @
        {" |; Q" f1 `' U% K% P
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));. ]1 I" k( G/ v& a
                sleep(2);4 |5 v5 J) ~5 u/ s3 E5 A2 b; ~
        }    
7 |: ?; G  ^- M7 ]8 j        close(sockClient);  . t0 p, j- ~- Y" l9 Z. \
        return 0; 
* O9 W9 I  }* y" c; G}( T* [2 S8 v( c; S9 Y1 {! M' I/ G

& `# A3 ~0 |2 A5 i( P% I
. ~7 d8 }. ~; o6 V( C客户端:
  1. #include <stdio.h> & I/ M' D( Y$ ?- o# p
  2. #include <sys/types.h> $ T, N: k/ @: T. O6 M
  3. #include <sys/socket.h> 
    ' z1 }9 y5 a" k+ `* Q$ C. {; {
  4. #include <netinet/in.h> 
    7 J# O1 ?6 s! V9 N) Y  `+ @- D+ ~
  5. #include <arpa/inet.h> 
    8 ?2 L( ]4 ^8 a  v7 k) ^
  6. #include <string.h> 
    : E* K/ e, @3 f) E+ w
  7. #include <unistd.h> 5 I. \' l% S. B% R
  8. #include <fcntl.h> 
    . T1 e5 }+ f# _) Y0 T, O
  9. #include <sys/time.h> 
      n/ z- _7 [  I: n/ r6 j9 l
  10. #include <sys/select.h> 
    7 z5 i5 s+ c/ x  y5 G# m
  11. #include <sys/ioctl.h>  : O: Y3 e$ [" t8 v' C
  12. int main() {
    ( a; }8 y9 C3 Y8 i; _' y* W
  13.         int sockSrv;
    : W' p) N7 [% _# P* Z8 v
  14.         struct sockaddr_in addrSrv;
    ! w! W. Z, j7 h! ?4 _( _
  15.         int len;
    - m/ E3 Z' O2 B4 e  [0 s1 s2 ~
  16.         char recvBuf[100];
    # G; U7 `* A. x3 z1 {1 [
  17.         scanf("%s",recvBuf);1 h' H* a( @( l7 }! @4 \
  18.         struct sockaddr_in addrClient;
    . o7 F, d2 e) ?# X9 w$ u8 o
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    & v1 B3 L/ U/ v+ J
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    6 x: G, q# l/ S. z4 [, d+ v
  21.         addrSrv.sin_family = AF_INET;
    4 _# z$ W' h7 Y, [; N5 o
  22.         addrSrv.sin_port = htons(6000);
    * m# q3 M! F- i! s
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));; j; ?- B5 H( s& H, r
  24.         len = sizeof(struct sockaddr);
    6 Z" E$ J' G' ~' h1 T+ i6 l
  25.         memset(recvBuf, 0, 100);2 h2 N% S( F% f0 P/ B! W
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);% |: p% }) U5 r
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));6 T5 Y( N$ w' T+ W! B+ v! \
  28.         printf("Client data is:%s\n",recvBuf);
    3 R- b5 e# s8 @8 K9 c+ Z8 l, X
  29.         close(sockSrv);
    ) L$ g* H8 R0 n6 }3 `5 Q& [
  30.         return 0;, W& `8 L) l! V/ P
  31. } 
复制代码

# Z5 e0 B& y! F) [* `) S4 s$ a
, @0 {& z1 i' U/ ?) M4 ]" o
# g) P, O& n6 c; ]9 O9 K3 i, a4 T
" |8 M+ W( q7 Q$ h% C8 v
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 20:52 , Processed in 0.121589 second(s), 20 queries .

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