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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
# t# h) O; k0 y. J1 A/ d) L
  1. #include
      x# X& k% T1 T; j, X. M
  2. #include
    $ R3 p5 C) m# ^8 r: v4 U* P
  3. #include' P2 I- y; r! v0 P* N
  4. #include7 V" P0 ]4 ]! m9 L$ r8 h* g& h. W
  5. #include
    ! N0 S& N+ s8 C- G4 s3 d) x
  6. #include: y( d9 T& L8 ^5 V: t) Z, M
  7. #include4 I* }7 ]0 ~) C9 |
  8. #include
复制代码
+ y/ C6 ?: p% y% b( l1 U9 B2 k) n

7 A! a9 A' x  M$ c* ]# ]- F6 Q" l服务器代码如下:& q3 q( D9 _9 J% ^. `
  1. #include' ^1 w1 g8 B5 x( s6 B' \
  2. #include- R5 J5 I2 c/ L' T* n8 Y1 T  u
  3. #include
    ( ^3 J" X2 M. r6 V
  4. #include+ O8 j0 h3 T& K' t1 E3 |& i, u
  5. #include4 Z; X% |/ z  L3 s0 C7 `# }  G
  6. #include
      X; n1 B' K- n2 Z4 i2 J7 E8 c
  7. #include5 b/ L! q4 Q# q$ Z4 a
  8. #include
复制代码

# Q4 q4 P5 d2 u  m; k2 e5 k: c) _( O6 y' ~" K3 r$ l; a

+ i4 V) f7 @; l4 x7 a8 [

, \& Z, D) x" B, w* ]
& T! P2 w1 }2 T4 s& y
2 i( q! p% n+ j- s! r
: _5 X5 F% h: N/ [: n/ T! {
, q( \( o+ G2 b% `* h; o

% j+ v3 X- v% M( Z/ c7 p7 P
2 H/ H6 |1 @6 ~8 g# h& O: h. @" m
( \8 A2 |2 b. J6 ~) i5 F

3 |& ~, b! Z& I7 W: ~1 \) x6 }9 t
0 h* a, f2 B5 A, B. T
7 ?( m& K1 M- u( |  C2 ?
: ~6 T9 ?8 E2 M# @/ R! G

2 Z! a9 `! E+ H( ?! J. _5 ?, D8 v
& [, R, n' A3 C
+ W9 K2 Y8 a% B( x% `$ ?1 _+ J( P0 z

3 q. T2 C( x) A4 M% e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:' Z" R8 D; ?3 x+ z2 V4 D$ d1 Y4 O
#include <sys/types.h> 
3 T) _6 J1 Z0 {- _' u' U% z* o#include <sys/socket.h> 
4 E8 Y9 T4 A/ O/ z" O#include <unistd.h> : E3 k- d4 ?( _* Y, u
#include <netinet/in.h> ( o! x; N0 d( m: F# _5 y* R
#include <arpa/inet.h> - I3 T, x, \+ k* K
#include <string.h> 
" b! y+ R4 w4 k- |( S#include <stdio.h>  
( C: x) t7 U' @$ Fint main() {" i7 N1 N; F' r* \( s
        int sockClient;' P, J+ \/ J- K6 o( c
        struct sockaddr_in addrSrv;
. K" @1 o* k* t! c/ M3 U        sockClient = socket(AF_INET,SOCK_DGRAM,0);
1 R8 ]5 K3 N; {        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");$ p' O4 R* e- Q! {/ m9 K
        addrSrv.sin_family=AF_INET;
, M* h* H! _/ l9 ?' J( ]        addrSrv.sin_port=htons(6000);
+ ]% W- D2 S3 w% M        while(1). @/ K* a- ^$ p) R! F& L0 c
        {
# k0 g4 h5 ~& l4 V6 m8 B                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));7 ?3 _! J8 _& M2 T
                sleep(2);
, F, C% r3 U# y5 ~3 e4 M- l        }    # H1 {8 Y) w) J2 b* n- t
        close(sockClient);  8 ~: x, A5 n$ k( |: _7 E
        return 0; 3 Z3 B6 _- d% x) A- V) a- [4 {3 |
}
( ^& ^5 F) I, Q6 N8 K9 \3 ~
* f% n* R2 `2 ~8 j( D
' D+ w+ P% Y+ d  a* X$ f( g' U客户端:
  1. #include <stdio.h> / j$ S% Q8 _% K' o
  2. #include <sys/types.h> 1 b' ^% z1 b7 o, _$ n9 d
  3. #include <sys/socket.h> 2 {( Z2 t  n& w! |# \2 V
  4. #include <netinet/in.h> " Q3 M: G, _1 X' L9 J5 a
  5. #include <arpa/inet.h> 
    * n; Z# S2 {7 U; o% v" U
  6. #include <string.h> 
    % M2 M4 W: m! R: o: B% L; K
  7. #include <unistd.h> 3 `+ N+ P' p$ u' C3 P4 Q
  8. #include <fcntl.h> 8 k8 D/ b+ U& M) ~
  9. #include <sys/time.h> . ^1 v, ~1 l" f4 R
  10. #include <sys/select.h> 
    7 e2 A1 Y  W1 C
  11. #include <sys/ioctl.h>  5 C, `- ~2 F/ V7 G( |* _
  12. int main() {
      l' M# R8 n5 `' Y" H: l+ ^  v
  13.         int sockSrv;% q4 k! s0 m; j
  14.         struct sockaddr_in addrSrv;
    1 M* l9 q, f7 }$ R, q
  15.         int len;' [5 V  V2 \# A# z* _, P4 d" n
  16.         char recvBuf[100];. |. d% m. B8 q" o' y4 P
  17.         scanf("%s",recvBuf);( A) V' o* n; f$ \) S7 U
  18.         struct sockaddr_in addrClient;
    ( c( o3 H5 F0 S" A
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    , C" _* h8 d4 P$ o1 q$ ]/ c- W
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    ) c9 `3 S& }$ r2 [7 M8 r
  21.         addrSrv.sin_family = AF_INET;8 K5 p# @" y$ F
  22.         addrSrv.sin_port = htons(6000);! E: Z0 O/ g0 `4 X) a9 E/ y" p
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));6 P. m5 i1 E" u& Q0 T. ?
  24.         len = sizeof(struct sockaddr);
    1 w) S5 r6 ]  v
  25.         memset(recvBuf, 0, 100);
    # U% k$ z2 |3 U1 i! w: ~% \
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);! P" K* L' ]& v+ ^) W. B& V" `7 A, _
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    * v# x# Q' s6 a& {
  28.         printf("Client data is:%s\n",recvBuf);. V3 Z4 ]+ A% b; F4 g
  29.         close(sockSrv);
    ) S2 \% X' t% v! L% ^) i# Q
  30.         return 0;
    8 R  e5 P2 m1 |5 f6 E( P$ h
  31. } 
复制代码
: ~) m& B* ?6 o. `
& W4 M1 n8 C- [) @. [' E7 W: N5 I7 {

* R  P) Y, Z1 s2 V0 ?) @8 o) q# r& l9 Q+ V. W& p; K9 z0 I' N/ X
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-20 00:01 , Processed in 0.066381 second(s), 18 queries .

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