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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
: k% L3 v9 Y0 [, }, N1 w$ P) X
  1. #include  ]! x( x4 z9 Z0 v' R: ]% R
  2. #include1 b) b. }( l+ w2 Y% d
  3. #include5 V' y5 h7 j: W$ \: L
  4. #include
    4 Q. e) A/ x$ ~6 j
  5. #include3 e5 X8 K" T. S) v
  6. #include* D* z0 Q( s/ x; V7 o3 f
  7. #include! Y1 \! |& ?6 M/ L; q3 C# e: @8 e
  8. #include
复制代码
  L7 b' A+ y' y5 `+ g$ X1 n& c

8 C! C: s, f; S! U) U4 t) a服务器代码如下:
, Y5 g  R. N/ P  a7 Y: q0 `, {) a
  1. #include1 J6 A* x" q  B( ~9 w( z. g
  2. #include
    0 {# J. \4 v$ g- M" i1 r, ^  W
  3. #include5 w; w" {* N+ w8 H4 m( j& ?' M
  4. #include
    8 g% \% I: |8 ?9 h
  5. #include4 a+ |- h& }; e# o, U* E
  6. #include4 s% T0 N( l7 A: m- e: `
  7. #include
    " s9 }: a8 L& K( g5 D
  8. #include
复制代码
" w- a0 [5 @1 |3 y0 ~4 ~* _

" d' d9 D3 J4 t. F) m. Q) r& [! @  a+ ]& Z8 \/ w- G1 n( V$ E
* d: _7 [9 _+ d- z5 M
" Z7 k# D: E# ^, G
2 O5 L. k/ |6 [) h
$ X' I/ H% e" y( U

* @: g- S  F0 p1 E0 q1 h( x5 s# M3 K/ d% H- V1 D7 |$ z
% a: y5 K1 w7 }2 w* v9 Z3 W
' n. |7 V) D; `$ r
: @2 Q- R1 ~; p
+ |) s5 q( ^) h* o+ j/ r
" {+ v! y* x, D" ~* |3 |/ L
1 O* m- i# n$ l
; a- o+ E9 m2 b- g. A& |$ K2 _

3 q8 n1 Y; _1 _/ Y% ]+ _

3 b: u- }) d0 S1 S, i$ y# l8 m6 p$ G4 g+ A" _9 @+ O6 [1 k! c
0 ?1 o  M0 ?& m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
/ t$ O% r+ V) _7 ~& m#include <sys/types.h> 
; N" A* |3 Y' S1 `: E#include <sys/socket.h> - s0 y" a# p/ v. j9 I) y( {
#include <unistd.h> 
& X" G0 X2 [& N3 _#include <netinet/in.h> 
1 a# e& G' p( k) ?- O7 S$ M' H# g#include <arpa/inet.h> . C! D: m5 ]1 k. C1 U
#include <string.h> 
! v' i0 @* i- S$ H3 n#include <stdio.h>  
1 C; S4 d1 C% U1 sint main() {& l4 m) d$ {$ j7 q" e
        int sockClient;
: r! W' x% P) g4 Z4 H        struct sockaddr_in addrSrv;
, R, n& U2 R& ?9 |1 E        sockClient = socket(AF_INET,SOCK_DGRAM,0);6 Y9 V4 |( i! n- @5 D( Z  _* i
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
) B% Z# {* j6 N1 B4 Q7 @        addrSrv.sin_family=AF_INET;. ~$ p9 V0 ?7 y% \
        addrSrv.sin_port=htons(6000);
, ~# h- Y) `# |3 {& \8 W0 m        while(1), {2 |! W- M& x1 \, Y# M7 F, Z1 _  Z
        {2 l; H; A- C! }6 n) i4 R4 b: ]
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));8 F/ u$ |2 {6 f& s
                sleep(2);6 @/ k) y; D1 v6 C
        }    
  v# M* Z, F" Z- `) r. _( G        close(sockClient);  " [8 E' C% q; z( {5 L& M) ~' S8 P
        return 0; 5 P4 [2 _$ C) O# A7 X# X0 [) j2 z
}
. `; S/ a% y- ]: [& g( M. ^9 \& G" p& T. M4 [

  P9 [5 _! b. `- m0 @; ^客户端:
  1. #include <stdio.h>   e* k; O# {8 K  R6 R
  2. #include <sys/types.h> , W) T8 C6 [6 Z0 {. ]7 a7 y% ^8 @
  3. #include <sys/socket.h> 
    1 X- G6 U' @: M( H$ \
  4. #include <netinet/in.h> 8 J: D. T" v2 x+ d. F# J
  5. #include <arpa/inet.h> 
    8 U' M" Y5 H7 S, s( h
  6. #include <string.h> 
    8 c$ M+ b& T4 y
  7. #include <unistd.h>   V# s% ~  h  Y  w, X; U
  8. #include <fcntl.h> - ~' a* X$ \0 x' G9 w3 ~* A
  9. #include <sys/time.h> $ K# K9 V- I2 A% i9 P) ^! W7 }; R
  10. #include <sys/select.h> 
    5 h( e/ G. K# h3 {( b" y# H7 u
  11. #include <sys/ioctl.h>  3 C2 r9 r) T8 o2 d
  12. int main() {
    " |" s% w) }$ r
  13.         int sockSrv;$ @) o# G" O3 ]- D
  14.         struct sockaddr_in addrSrv;- y. }) T" y1 o+ Y
  15.         int len;
    , f& K+ o0 V: M0 B$ I6 Q& _
  16.         char recvBuf[100];
    / q- Z3 ^" O( C* `
  17.         scanf("%s",recvBuf);
    8 s# i8 w- F6 v! d) o
  18.         struct sockaddr_in addrClient;
    0 D, Y7 j) ^0 W# P
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ) h" [$ B. ~! z. U; X+ ?
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    $ z/ t3 n- s& g2 m) P9 \7 R7 A) z
  21.         addrSrv.sin_family = AF_INET;
    3 t) m$ \/ T; j- ]0 H* z: e
  22.         addrSrv.sin_port = htons(6000);" f, E3 C- C6 g2 L+ \2 }
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));7 R/ f5 a9 p0 M* A
  24.         len = sizeof(struct sockaddr);
    2 e; E6 h$ r2 @3 Y- p1 Y
  25.         memset(recvBuf, 0, 100);
    4 v7 K( ]  Q3 R! B1 C$ z  j
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    / A- U0 ^( l" O7 T+ {8 [. I$ F
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    4 t3 f5 p( u9 ^, J+ T+ G& p
  28.         printf("Client data is:%s\n",recvBuf);
      |* _: X" [6 O2 W
  29.         close(sockSrv);6 a) V  v4 a( H! A- H. G+ m
  30.         return 0;; r4 f" T3 X1 w. {6 M$ q+ w
  31. } 
复制代码

4 E+ c: Z) o# B& K% R" ?
$ K/ B6 ]! t! V" h2 h7 t( B6 z) F: X  g& x( w+ A: l

# P7 L+ \' F9 G, a& V, t
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-21 00:14 , Processed in 0.048652 second(s), 18 queries .

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