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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
8 u5 a8 {: P" e
  1. #include
    3 z& k) K9 e' C; d
  2. #include- r- L0 w6 ^/ f' |- Q: @
  3. #include4 Q& z; r5 r. ~$ H" B- P0 f3 i
  4. #include
    ; p0 V! O; K' W5 r. Z% D
  5. #include
    : Q- b, h7 x* L  X. {5 h
  6. #include& o3 T8 X; q+ F; E  i3 R: Y
  7. #include' d$ h- F7 l3 e" W
  8. #include
复制代码

! a, e' p6 T- o4 v) ^+ \7 n$ k
服务器代码如下:7 d% z8 Q* h2 L5 I
  1. #include
    ' s  e) d' R8 ~5 j- i% y( s
  2. #include
    ' A% \$ g# c/ X. j: h! y
  3. #include
    & K1 O' X8 i4 E! R
  4. #include
    ! T) Z; G. x, H( s: Z9 G3 z
  5. #include
    9 I, p; B0 i8 t" C
  6. #include
    # T7 s( u1 [. ]' y: n& e
  7. #include' ?3 n8 {+ Y2 t/ T6 n( J4 f! D+ Q
  8. #include
复制代码
# }$ A2 A: n5 c/ b, r* d4 R

# e4 {1 ^! }* J0 }& j
, W' V" T; o/ V% Z
  H( n  {4 O5 O* `

3 ?" y) [! ]* Z" d
1 B0 R( Z2 [$ ?! C7 d

3 |: F& U, y- v2 E

6 e8 y9 e, l. k; e# n9 v$ x7 k+ n/ Y- ?4 N) R

' `7 ?0 h: N" V% c6 N+ M4 Z9 n* w

+ O! V  g: e  S1 }4 E& C0 K; n$ u
9 }9 C' s+ P( I6 }& \
; c5 I. |; \1 ^. u& u5 b
3 z9 O' u. s+ h* d. K/ m

* [1 Z  S+ L6 |$ J# B* N
6 [$ {2 R- {/ C7 ~4 Y6 Z
: D0 B: z  T2 K+ z) R2 J! _% Q

# p# i' \' J9 C9 d* Y* t) P
! e  q. |9 a: A1 P( s: h* f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:( D* v+ e. I% D; t4 N$ d
#include <sys/types.h> 6 _4 X) V2 y# H( R+ F
#include <sys/socket.h> 3 ]5 a. {+ I! R5 f3 o3 b
#include <unistd.h> " h( I# \6 K2 R% r6 V  W
#include <netinet/in.h> ' s" o7 m$ h. o
#include <arpa/inet.h> 
, s/ P$ F# Y7 W/ N/ v! k7 _/ X#include <string.h> " ]2 h) a# o  I9 [
#include <stdio.h>  
" @2 V5 C6 P! t" cint main() {& i" |$ A$ n) o0 s7 h2 L
        int sockClient;
; m: r% E0 B5 _! M6 h. B        struct sockaddr_in addrSrv;: I- _5 J% Y6 T5 n4 y
        sockClient = socket(AF_INET,SOCK_DGRAM,0);9 s. i  E0 I- X. u
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");4 _7 a& O* G% E
        addrSrv.sin_family=AF_INET;
, z! A! d; `# v        addrSrv.sin_port=htons(6000);9 f( M) f$ E% y; S' p
        while(1)3 I4 j+ z6 l8 u8 A
        {
& T9 T1 |9 Y# Y                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
1 w9 Y5 n! [! U8 {% B# ^1 C& }! N                sleep(2);
# n& c+ Q6 K  j4 k        }    ) K2 I# W: T  T
        close(sockClient);  
8 W% z2 B+ K2 t8 g# ^$ y6 L        return 0; 
4 [6 c) _* _0 l}/ B; l# ?/ ~; s+ @, f
; H6 G4 Y* q8 w/ T. c3 G' l, {

/ R4 u8 ]" i) U/ I( C, M: X客户端:
  1. #include <stdio.h> 
    & G  c1 X3 N4 K* K: p( f6 g
  2. #include <sys/types.h> 
    2 m  S$ V$ j1 P) B4 Z( I; z: u
  3. #include <sys/socket.h> 
    5 U! o- ?8 W! S* F- J; o  a+ p- [
  4. #include <netinet/in.h> 
    ' Z/ C4 m$ ?* b) [
  5. #include <arpa/inet.h> ! I7 \9 Z2 K( E( b# a8 t) T
  6. #include <string.h> 
    3 s7 Q5 t" s% \5 n) N# ~: e+ D
  7. #include <unistd.h> 
    7 G; Z3 d8 z. ~. \5 E
  8. #include <fcntl.h> + d8 _  _  i! M$ k& R0 R: F
  9. #include <sys/time.h> - i0 F$ ^" e% O. j
  10. #include <sys/select.h> 
    1 e$ p  v. }; D, }9 l
  11. #include <sys/ioctl.h>  0 S0 A3 ~4 _/ y) @2 z( [
  12. int main() {
    " d9 {) B" L& Q8 H; g; u& h
  13.         int sockSrv;
    & x1 @5 J! z) |* V, n/ }
  14.         struct sockaddr_in addrSrv;' S  X! a( W3 e( E: E
  15.         int len;; f, \. K! E# A8 `$ k& q. j* _
  16.         char recvBuf[100];" N2 B/ Z; [2 A1 l6 c$ f& n
  17.         scanf("%s",recvBuf);
    8 G: m7 w/ N* P1 K
  18.         struct sockaddr_in addrClient;
    5 p$ V8 i% Z1 s) g5 @' q  b
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ; n. ^: ~" @" m4 [3 b( X
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);0 @' Y2 v+ C9 G- m1 `6 D
  21.         addrSrv.sin_family = AF_INET;* S" h% |4 T& ?% V
  22.         addrSrv.sin_port = htons(6000);$ ~: }  M" W6 ^" Z% f' G- A
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    . k" s5 o; Y$ U/ s! ]5 _4 r% \, x
  24.         len = sizeof(struct sockaddr);
    . S% ]: d% a: _& q- e
  25.         memset(recvBuf, 0, 100);
    0 F5 z8 e0 v+ L$ ]
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);& ?1 `) h7 @% S
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    ) I+ p6 p0 ^" I- w/ ?2 m% w
  28.         printf("Client data is:%s\n",recvBuf);
    % K; |3 K  Z! X* J! h1 F7 y
  29.         close(sockSrv);
    5 z6 ?3 ]. Z; M. x
  30.         return 0;1 f" Y" u) G% r% z
  31. } 
复制代码
7 B" t$ I& ^' e
7 u! d  S2 ~5 U

$ w0 H8 X  R, ]! I3 y
- E, E+ B& Z2 F& q1 n: B
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 12:01 , Processed in 0.108382 second(s), 21 queries .

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