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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
客户端代码如下:
  y. C/ B* W' P7 D
  1. #include
      ?8 e: d/ i* A, r( g. E
  2. #include6 y# R$ [: X! h
  3. #include
    + O4 ?$ ^& ?# t% c
  4. #include
    9 Y" x5 V( ?' H( H2 t
  5. #include; _) l  X! k& C; K. Q: N/ T
  6. #include7 v1 a0 ~# B1 S/ o: A
  7. #include
    / e! T/ J  F8 E) H  S
  8. #include
复制代码
( h& r5 p3 j1 B) c0 S4 v1 L1 x, w

' J% g. {1 T! r! x服务器代码如下:: o3 H+ D6 }5 O
  1. #include( E8 ?2 P. w9 p) u' {: v$ j
  2. #include) `6 l$ Y% @9 p% ^5 _8 N
  3. #include
      d( P2 h( Y2 n# |
  4. #include7 f5 P# X3 v- p9 p3 n, U
  5. #include
    & R  d+ V3 s, w) n  ?
  6. #include
    $ M' q  W! b' y  k0 l2 H6 {; [
  7. #include; h/ l1 n- \) [! R; L& w- u
  8. #include
复制代码
1 |4 P5 G9 f4 E6 Y: f3 K$ R

. D, d) [- f* P
; \. f: Z8 s+ d( a7 w3 R

( X6 k2 ^( e+ x, k3 a8 i3 N. d% X9 w5 Q1 D$ m2 y3 J6 j- L" v
  r/ o/ B  B0 E
$ N; k% u5 o8 M7 h% @( Z
. U, A+ M5 @* ^- O" g& u2 f1 @
5 A7 G; W+ D$ X/ F% d0 k. S5 a
/ C8 m* \! Q! [7 |% m6 g
" O4 N/ b# h6 p/ F
$ d3 P5 s4 I4 o0 @# v7 x( {  k

' h6 V% C( z, f) p8 _  V
2 G% Z: t* e2 {/ `8 q- z0 E
$ \3 z4 O/ F: Z9 I' }' U

) o) F# ~. C% L0 O0 a2 r4 q0 h9 h* W0 p3 ]3 E& l

! d8 {/ [5 ^0 d" w
6 {6 L' M% V% q! C4 P- V4 F8 d

9 X* z1 I. I8 d5 q  Z" c( K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:" D, C- y$ r) O' L
#include <sys/types.h> : A- p/ t/ O4 w: \
#include <sys/socket.h> 8 N1 O/ b6 Z0 A/ U' o. U9 ^1 Q" v
#include <unistd.h> 
; Z$ g; V; V) Z; Z# }- F7 E#include <netinet/in.h> : Q1 a7 i" r0 Z5 _% U0 _: Y6 N
#include <arpa/inet.h> 7 c- s: U8 Y3 d! {: B% e
#include <string.h> 
9 c2 L" k9 S" `" a6 X4 F$ e#include <stdio.h>  / t$ v6 B9 h+ L) D' `* a0 m$ L/ W
int main() {
2 j6 M+ o9 P' {0 G' n) }( \        int sockClient;. X3 P1 ]  h" a- u( F: g
        struct sockaddr_in addrSrv;
& n. n0 G( u3 Z- k& v        sockClient = socket(AF_INET,SOCK_DGRAM,0);: F% Q0 f+ {% B$ E
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
' w% I4 K6 F/ G6 U7 h( E        addrSrv.sin_family=AF_INET;* Q& B' n% }3 a1 N: h) i+ Q
        addrSrv.sin_port=htons(6000);4 ^1 M, |& c6 E8 x) ]8 [; d
        while(1)
4 N' z. ]. l; Y5 F& [4 D        {
9 I! H* ~; l8 {6 {$ w2 Q8 e: y                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));! c2 }# n5 k, {! g8 u  B
                sleep(2);3 I: S' {7 Q) f) @0 q$ o# d
        }    - z& K) D5 Z1 d/ a9 G! Q8 G
        close(sockClient);  
5 f' s& j+ u. T; b$ L& ^/ x9 B        return 0; 
0 m3 J" j8 u7 I/ m& i  L}
# b/ K% w6 K' [7 S5 `$ z- \1 n) n9 u4 S4 Z5 y
5 ^, p4 ~. e0 A/ S5 [
客户端:
  1. #include <stdio.h> 2 b% m+ Y/ p: ~1 V/ ?9 ^. ]
  2. #include <sys/types.h> 
    ( l2 p$ B# y' h4 y& g& o& g" N
  3. #include <sys/socket.h> 
    # A$ a1 f1 U1 M  U
  4. #include <netinet/in.h> ! X( `3 t1 b+ G8 G' _& i
  5. #include <arpa/inet.h> 4 h5 _$ b9 B/ @# F' r. G: v
  6. #include <string.h> 
    8 F' {# A7 W* S0 J  {+ Z% j# L& r
  7. #include <unistd.h> 
    7 j2 ]2 C9 K9 f) l! I/ f( Y
  8. #include <fcntl.h> 
    & b2 N2 n7 k! o, t' o$ B/ V
  9. #include <sys/time.h> 
    - {" i5 |% y, ?5 w; f9 e* v
  10. #include <sys/select.h> 
    / U1 E5 g2 ~6 G+ B& @8 D6 r. y  Y, F
  11. #include <sys/ioctl.h>  
    2 h5 X! n- x* H3 r
  12. int main() {! U( x3 S! K! W9 C& ^! L
  13.         int sockSrv;
    % n: C. S! P0 N
  14.         struct sockaddr_in addrSrv;4 H8 |# f! ~+ V  w
  15.         int len;
    3 d! @& l0 J! y! o" i
  16.         char recvBuf[100];
    9 h' Y. l# m( I; C2 z5 p
  17.         scanf("%s",recvBuf);8 U9 t. ?8 A6 ~
  18.         struct sockaddr_in addrClient;" s9 h" m, K( z, b2 y6 c: f( ?
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    * S) G+ Z; g8 n5 d  U/ j
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    ( h( b. d" ~% {* F  V
  21.         addrSrv.sin_family = AF_INET;' r2 f0 \1 o$ c6 [
  22.         addrSrv.sin_port = htons(6000);* i4 y$ @2 P- c( S' L2 {& `6 ~9 K
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));. F  e. Q0 j4 Q8 U2 d1 K$ F
  24.         len = sizeof(struct sockaddr);
    8 L5 Z# D9 _5 p) M: D4 g
  25.         memset(recvBuf, 0, 100);
    7 R9 K3 u# q. n4 Z2 q
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);! \( W6 L3 c0 N. X! Q
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    : w: Q: T9 X& K1 _
  28.         printf("Client data is:%s\n",recvBuf);8 A# g: H0 R/ _* V6 r+ v6 A
  29.         close(sockSrv);; t1 g- `( p$ y
  30.         return 0;
    % ~' O! `0 |% Y3 R& A
  31. } 
复制代码
& c4 u" \! Q1 l. R" f# K
, O2 R% ^5 K' {1 ^( s! ^
0 L: ~, C* b  P2 w6 S, P
4 a- r" x( h( ~1 ]
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-4 08:11 , Processed in 0.056149 second(s), 19 queries .

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