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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
! [1 {* }, j2 u/ Y- ^
  1. #include
    ; d7 G' u5 n5 f, A' h" q& \5 d- j
  2. #include  w6 ^5 }2 _# f8 x$ A- @7 S
  3. #include# y, m$ H& |& m- b5 L
  4. #include
    " i' F6 C0 V/ P
  5. #include
    ; \# k% o, [& q
  6. #include3 L" a2 X* K! k  m, p
  7. #include6 P0 o+ [5 j8 B) o* M: u- n; T
  8. #include
复制代码
* R6 K* `, B, b0 p* w: Z  C, I+ [
9 x' J" g* q& }
服务器代码如下:' l2 C4 k# @4 m4 t* T
  1. #include% H5 ?- e+ l0 ?
  2. #include
    , |5 g7 ]9 a# E& t* Y8 W; z% R3 r
  3. #include' I! ]. g% w+ R+ g4 Z) W
  4. #include0 j% ?, j8 i0 V
  5. #include# g# B; Q" K" O9 S7 [) `0 O3 Z
  6. #include
    ) r9 E: m. q; O* ~2 h% K. o, a
  7. #include
    : t" X4 T  }: F3 s& ?8 y0 Q% N
  8. #include
复制代码

. s! b2 R' O- l8 R9 V* O6 s
9 P  n; ~6 M8 [& w4 z; |: F+ f" I
7 o% d: T0 U& R9 i8 D& ?% x) s; b

* o' ]6 I- j! X- v/ V' g5 x
' ^7 q; Y  _' a! f3 E
% P$ `1 q# v7 Q% U+ h  l) x, a
% C  \' d% u7 c. Y( i: z

4 S  C' k% ]& T/ r0 N2 l# r7 w% B& M2 `% w
( k4 r+ w; O2 k6 x: d1 l6 {
2 b$ A+ @- {8 F

2 F+ c: O1 p% B' r- J9 E; W0 S: N; ]) t4 l/ b. [

( h; g" q& m* t3 V0 E+ W; F! q0 Q  F. [, T
/ {) Z; M/ f( w% w+ a

; W3 ^- k# ?5 {! C) q
# i! y. v9 g) t. k/ ?5 y

/ F3 G7 ], L+ E% y. [

! F% }+ o6 K, ^' v' Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:/ Q" }: Y( r- p
#include <sys/types.h> % _. h1 p* R( a- c! q; K
#include <sys/socket.h> 7 M$ c+ G! @0 I: H
#include <unistd.h> * ^! s% }! m! Q1 S1 p2 Z
#include <netinet/in.h> ! G: @  h6 [' \% s1 o
#include <arpa/inet.h> $ H) e% ~0 b5 U$ I. W  g# m
#include <string.h> 
- H* I% V: T5 \5 S/ {) m% Z( \#include <stdio.h>  . o/ |) R1 o" e* `2 u, ^! x
int main() {
: `& l. f! b3 m) K        int sockClient;7 j8 n( a& A" Y$ a) A& C: Y4 Y
        struct sockaddr_in addrSrv;( `' M  K6 D& f  c1 I6 B: P2 p$ a" P
        sockClient = socket(AF_INET,SOCK_DGRAM,0);  c' ~. b: y" R$ q
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
( x: p3 R+ c4 B: k6 Q: M        addrSrv.sin_family=AF_INET;/ z( n/ E* _# L& G% ]
        addrSrv.sin_port=htons(6000);
, l- J# F/ m. P1 L3 L0 Y        while(1)+ s7 y: z3 D3 W# P7 I0 p- s, A
        {! X& I2 M# p  u, c; o
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));, Z7 T8 o: R$ M4 K: {# p
                sleep(2);
1 n  @  U9 S3 c" U- }" U        }    
" f+ p9 d5 C: ?/ M        close(sockClient);  
1 x7 H0 \1 n8 q* J+ d% V7 @6 L1 }        return 0; 
* p7 e, `, s" w% R}1 p4 g6 b' Y* v8 E+ a4 ?- Q& L
' ~8 t; ?! D# G+ h1 D( }- ~9 X

9 ^9 [  a8 i1 ]5 Y5 @客户端:
  1. #include <stdio.h> & j9 n  ^' C/ N* e
  2. #include <sys/types.h> 
    * t) Q0 |7 m- o( _
  3. #include <sys/socket.h> ; j% m  D+ w/ Y6 S8 `# p
  4. #include <netinet/in.h> 
    0 V( A4 V8 ^: Z6 \& y
  5. #include <arpa/inet.h> 0 y/ M( c8 V; S, v
  6. #include <string.h> ' C0 b5 I1 ^2 o' L5 H( Q/ `7 n6 ]/ \
  7. #include <unistd.h> 
    4 ?. U6 L( k  p# }$ r( h
  8. #include <fcntl.h> ; A- z  i6 g5 T$ x3 v% M5 m1 D9 E4 [! ?% V
  9. #include <sys/time.h> # t8 q6 |9 L/ y
  10. #include <sys/select.h> 
    " m3 ?! E' f, }. y4 K8 h, t- Q; ~
  11. #include <sys/ioctl.h>  . o; I& j" y3 F) y5 p
  12. int main() {
    0 i- k3 p+ `" D; j0 c) _! Q" \6 i
  13.         int sockSrv;
    . ^$ Z9 r$ S! x8 M# e/ g
  14.         struct sockaddr_in addrSrv;) J  Y( q/ q" f# ~+ [& c
  15.         int len;9 i$ J/ @5 ~/ D3 |
  16.         char recvBuf[100];% ^7 c, c3 p3 z; ?$ i
  17.         scanf("%s",recvBuf);" T  [% I9 e) C% O. N, }" q
  18.         struct sockaddr_in addrClient;
    & e; [! E8 \2 l* ]/ U) g5 {
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);% N+ Y# {" l+ n8 @/ U! F. e
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);0 X% S9 B) ~4 |9 B) C" X6 ~8 D
  21.         addrSrv.sin_family = AF_INET;* E' r! W3 P8 h
  22.         addrSrv.sin_port = htons(6000);4 }% G, K* M& m8 [; `/ H
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));- J  n, B5 a+ F1 y: C3 k
  24.         len = sizeof(struct sockaddr);
    + t. d, B1 R, G' c0 I, x
  25.         memset(recvBuf, 0, 100);- I6 a- Z4 e( e2 j% R, C
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);# B' f3 k  R) N! N* k
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));, x4 z% |1 c) t7 y9 Y: r, J* n" {
  28.         printf("Client data is:%s\n",recvBuf);+ f7 ^( [' G+ q' B$ o
  29.         close(sockSrv);+ Z7 `, Q8 q5 `: r2 ~/ L
  30.         return 0;# O4 P1 J- B$ A$ s
  31. } 
复制代码
& |3 [" o. n/ b  O5 o/ F6 Z4 x

! Y6 j0 l, A: }2 X$ M) v, a, d
  \* X/ x/ V. n0 A1 @3 n9 y4 i" p  i$ N: [
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 14:32 , Processed in 0.055165 second(s), 19 queries .

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