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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
客户端代码如下:8 J0 x! w3 ?" s! a, B
  1. #include
    " B& c& x8 n9 J+ U$ I' }
  2. #include" e  v8 M% ~6 {6 _  F8 f* e
  3. #include
    . S4 i. t  c$ v# ?
  4. #include
    ; g  {# V$ Y/ A' _
  5. #include: _8 \+ I) @" d9 o
  6. #include
    2 g6 a" L0 B. X/ z! Q
  7. #include/ O- f2 V/ ?0 J+ n
  8. #include
复制代码

: P( G# c4 r$ ?2 W( F8 H1 l1 h: M2 f2 h8 R( p
服务器代码如下:: d7 f4 }; E7 ?& L& \0 l) Z6 h. q
  1. #include
    % c5 Z- b" S7 H: A7 v! V
  2. #include
    ; q+ F4 N* c7 j' ~
  3. #include- H7 d9 p* O' h2 N
  4. #include- V7 C6 h, V) ^' O' J6 I
  5. #include
    " |0 T" k$ g2 X& J) Z
  6. #include: K) C% `7 w  J- R2 G
  7. #include5 k9 K2 C* P& T% O
  8. #include
复制代码
# L- D" B, C$ t) w7 q$ q. u) O5 \

2 K0 T7 V9 @. d5 q! G7 q  y
0 e( ?' A! T  c- s7 m7 K, Z- G! U
7 N+ n7 W4 X9 ?/ E5 v  C% q! Q1 C

( v) z) W/ r7 x2 @
1 b7 s# U& L8 }3 T7 O/ D5 {6 v# N; P

; ]/ `* g+ v: A

; _; j; _' ^' t$ W8 |# I" S% B
1 k4 _* L/ L1 }/ E5 W
; k  w- N' u" i: _

2 d1 g$ f+ K  a

' A: H8 }; i9 m6 V. J% j, w5 C
9 g5 j( H; N$ P0 a" a: d* w$ J
$ o0 @9 Z/ I7 B$ ^" I% H0 \" l

" H- N8 X1 ]+ y2 z* H
, @% s& c) j& F0 }/ ^& r; o6 E

- g/ F+ H0 O$ u# c) o  V) h
8 A; d- \, g# N6 t  o8 j+ \
" K  j' X1 l: S. r8 }( ~/ n0 l

! E; K; y& u: Z* f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:% i/ q7 I1 j3 P1 o! N
#include <sys/types.h> 
5 C" K0 A, ^7 Q0 p#include <sys/socket.h> 
3 _1 Q$ N3 [; M8 r: O, N% n#include <unistd.h> 
: D. ^% G" B; \3 _" d#include <netinet/in.h> $ ?5 N9 O0 |& `' g! \
#include <arpa/inet.h> * e# @5 E8 r. E( A8 R
#include <string.h> 8 X+ Z8 O0 e5 {: X2 ]
#include <stdio.h>  % F) h; L( z+ ]. w
int main() {( L% `8 ]* K. ?- r2 ^0 A& q9 c
        int sockClient;
" e' T  v9 Y3 o; I8 x+ G        struct sockaddr_in addrSrv;$ L! n" m  Y) J4 l# Y! m
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
, ~! n5 ^' \" E; _* s. t2 Q5 \        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
! B1 I3 \0 Z: t        addrSrv.sin_family=AF_INET;
- n9 b3 q- m7 R% O        addrSrv.sin_port=htons(6000);" `% Q! H8 Q/ B9 _& H( r
        while(1)( l  E. R2 w; `8 J( g1 g9 d4 V: C
        {* S" g2 \- \" B7 [
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));8 v2 D9 a; V0 s! J3 z
                sleep(2);
3 N. e* M! ]7 O( o        }    + s+ A/ f7 g$ R
        close(sockClient);  
6 M* v+ G! s) S* j% }- Z        return 0; ! Z7 G9 _" h0 p% w. c
}
( P7 t2 ?$ k  }! d) G
6 u9 G5 x5 V& e6 }* ^& Y* y
/ m3 [- o5 l6 M9 L+ h客户端:
  1. #include <stdio.h> 8 W; D' c2 f* b
  2. #include <sys/types.h> 
    4 p3 `; w* a" w2 d- }
  3. #include <sys/socket.h> & M. i- s( i6 `/ I3 [
  4. #include <netinet/in.h> % H7 w6 J/ p$ i1 F7 _0 ]2 i
  5. #include <arpa/inet.h> 6 l# S+ M& N  B# l  _9 `8 P
  6. #include <string.h> 
    9 X, t6 s, `' O* Q4 k0 C
  7. #include <unistd.h> 
    ) T6 J5 A' J$ m' g
  8. #include <fcntl.h> 
    + A! P6 \! {' F
  9. #include <sys/time.h> 3 y! h2 T% m) P
  10. #include <sys/select.h> 
    2 S: p* V* A1 q" B
  11. #include <sys/ioctl.h>  
    # r/ o7 z" I7 t! M) B
  12. int main() {% M& n; g  B' q( o. b; b2 L
  13.         int sockSrv;% j! u9 ^9 k- y$ x
  14.         struct sockaddr_in addrSrv;/ n# a4 w1 V; L) Z( m, b0 \
  15.         int len;$ Y+ R& A* W( U/ g6 V4 |& K' k
  16.         char recvBuf[100];
    $ y/ j) h9 _8 o" \2 h2 S3 X" L
  17.         scanf("%s",recvBuf);( P& s. |- D0 N7 G% p) z
  18.         struct sockaddr_in addrClient;
    - U- c+ D7 K0 G$ l
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);$ N' t* S$ R3 e
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);2 G# S% r5 g2 s0 n
  21.         addrSrv.sin_family = AF_INET;
    + m( U3 B3 Y' n. K& H
  22.         addrSrv.sin_port = htons(6000);
    ' i' x8 [# d2 t0 S
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    ; `: A/ D) V$ P) e
  24.         len = sizeof(struct sockaddr);
    , z# z) f. {" B
  25.         memset(recvBuf, 0, 100);
    # ]" o; G+ S" l) b( N
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    2 E3 L+ J- n( f
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));8 j* C$ }4 Q9 @% n! V. j0 T7 w
  28.         printf("Client data is:%s\n",recvBuf);
    7 {2 S, e) t+ g- J9 n% F
  29.         close(sockSrv);
    $ K# ~% H, G" c6 c0 X# v6 l
  30.         return 0;. ]2 e( Y. u, \$ I6 e% V0 F
  31. } 
复制代码

; \7 F7 [% C+ L( `% v; l! E8 {1 @0 ?% d( E  t1 C6 U

! y1 a" u2 \1 f3 [* G3 x0 q
% P, y! L4 }  f8 J/ \# S
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-21 03:18 , Processed in 0.054516 second(s), 19 queries .

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