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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
9 f9 p/ s) `2 E8 z
  1. #include( Z) H" G: n' V# j/ e
  2. #include7 E3 ~  Z+ H+ ]- K& M, ]6 u' B
  3. #include
    + w! g4 p! y9 m% X7 N+ p- f$ [
  4. #include
    / ]2 E4 A. Q1 O% ]  @4 f$ A
  5. #include
    8 L6 O/ O6 i3 P( s( ]
  6. #include
    ' e3 W( K& G1 W  ^- u
  7. #include
    + H1 `2 u3 t8 I/ M( A+ M  I
  8. #include
复制代码

4 g7 L, I* m9 m- q2 Z) y. R& g. M. ]( E- r2 R2 X; g3 D5 A8 s" t
服务器代码如下:7 }1 J5 j. L, A- M
  1. #include1 M: \; q! W5 v
  2. #include# z0 i* \% f, N
  3. #include
    2 C! x7 ?: Q) u( v
  4. #include
    % I# T+ i3 g( R
  5. #include
    / ~& r$ b1 R  B( m! F# K0 l# {- Y" B
  6. #include9 j; m7 L9 @. t1 ]8 N2 I5 }  c0 I$ f
  7. #include
    " G' a0 w1 ~6 e" s" v9 K
  8. #include
复制代码

( _, ?; E7 @4 \0 n% C) \$ H, O5 W( n/ H0 @/ T$ `( D2 B7 w9 p* r( ?

! S, T$ y& _1 P1 B5 a' D9 x

5 O( f1 y; z( P7 d
$ m! o/ z0 l: u" t
5 j( @* i& \8 j; i

: e) f# |$ b8 m' Y

7 F! V; m6 F6 T' c
$ ~) b$ j4 K# p! q) V' e7 [9 q
6 g& k* l  S7 ?) _: t( T

; ?1 V9 }4 k9 x' j/ p. |

+ B5 ?$ t( I6 w9 {
- t2 M& g: _9 V6 Y3 i7 L
7 r; r& g9 ]9 I/ n/ ~% M

8 J! K: k1 u, {& ^

+ D' U( w6 d) e; k9 A+ L+ m0 [
, i7 |3 L2 Q" `! k* h

! ]" W) e1 S  c4 F5 D8 K, `. Z3 j+ v8 k+ O
" F2 w" N6 n, ~9 j- y6 K6 q9 e7 Z- \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:8 v* _8 B  J+ ?, z
#include <sys/types.h> 
  U! g! Q& y4 L$ V8 ]% k8 Q$ {#include <sys/socket.h> 5 x1 C3 F+ x6 \/ V
#include <unistd.h> 3 \# a6 A/ R& j7 d6 e4 G
#include <netinet/in.h> 
8 A! L, E* Z. I* x9 q3 F* n5 a#include <arpa/inet.h> " S1 ?# |% H# b( E) M8 h: s/ h% s% }2 y) }
#include <string.h> 
2 Z7 l) p/ F- L4 E6 q: t/ I/ ~#include <stdio.h>  
0 o* R8 e+ s' j: Q+ N, {' Xint main() {! u! E" y* Z4 T2 m5 a. E" j0 v
        int sockClient;
0 Q7 w6 r4 P7 [* F$ X  {) m, B* c        struct sockaddr_in addrSrv;
! m3 U# N' B" [        sockClient = socket(AF_INET,SOCK_DGRAM,0);. X1 {5 ^6 w0 b  e
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");$ F& ?- Q% j" J0 z. ~
        addrSrv.sin_family=AF_INET;
1 {. q9 y) W- Y$ c7 m- \        addrSrv.sin_port=htons(6000);
. A6 G, z0 N5 p) @, k        while(1)" i; I3 m$ o% w1 W1 D" Z% `; c
        {
2 ?( q+ H! t4 G9 ^* f/ [                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
1 I0 }8 E3 M0 b                sleep(2);
. n2 P% m4 w. u$ o% c0 P9 Q        }    : t( r7 U2 f8 ?6 N4 T1 d+ b6 t" |
        close(sockClient);  0 W$ {3 g+ Z7 O! r
        return 0; 2 \4 x1 o! Q5 u; O! P# n
}+ j! u8 W5 I/ |: l/ }' d! V& _8 e) |

* j2 x# B' \9 a
" `1 ?5 L! x6 u2 e2 |客户端:
  1. #include <stdio.h> 
    ) k- d! f. K' o- {/ k9 _
  2. #include <sys/types.h> + H4 l, S! B9 B; R1 \, N
  3. #include <sys/socket.h> + i* u( c* Y7 }# Y
  4. #include <netinet/in.h> ! ^; V1 p) [* L, g" z! X6 U- ?2 W9 y
  5. #include <arpa/inet.h> 3 s! K, p: W3 B1 M- Q6 y
  6. #include <string.h> 
    ' a  X  Q& u1 O+ d$ z, u
  7. #include <unistd.h> & a: p/ x( p- d5 m. E2 b6 [
  8. #include <fcntl.h> & H9 E3 @9 Q5 I% y% n1 y
  9. #include <sys/time.h> 6 |3 G3 ~- o! K! i
  10. #include <sys/select.h> 
    0 ~9 N' V/ @% o5 Z4 s% G6 a
  11. #include <sys/ioctl.h>  1 J* ~) W; S' p) R# D
  12. int main() {( W( x  Y# w& a  W/ k
  13.         int sockSrv;
    . ^7 {2 d- V$ _' T, y$ D. B* u2 k& M
  14.         struct sockaddr_in addrSrv;* z; f0 {! w, Q2 R
  15.         int len;
      y# q) c2 B5 ]% `( w& S2 L7 I
  16.         char recvBuf[100];" `+ I7 Z( C$ e+ [, E' C6 A
  17.         scanf("%s",recvBuf);1 t( d, T" H8 a/ f# r1 J0 a- p
  18.         struct sockaddr_in addrClient;
    . @; t+ x3 e; R, H9 q. e+ y
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);& Z; p+ }, b. O" {; L3 N$ w
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);) S. J: ?) t5 d" L- Q, _' f
  21.         addrSrv.sin_family = AF_INET;
    2 ^8 G! s5 H7 l% [( n$ G
  22.         addrSrv.sin_port = htons(6000);
    - U: H0 e$ Z2 U" p- _" w) U  C
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    % i3 q3 N; c9 B9 t( `
  24.         len = sizeof(struct sockaddr);5 m8 B2 [4 k/ M5 k
  25.         memset(recvBuf, 0, 100);" y7 ^9 E4 n& h/ U! \3 h8 M
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    $ ^; r8 ~; y& N3 ?
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));$ N' H2 _* l, D9 A+ X8 m
  28.         printf("Client data is:%s\n",recvBuf);! W; J7 ?3 O) |$ X2 A
  29.         close(sockSrv);7 x+ x3 X( u% Z  W1 i! t' w6 a
  30.         return 0;
    . _9 V) K- T* `
  31. } 
复制代码
( V( m+ n$ z7 T, D$ w* V5 J
: x, u+ b# Z* A. q: ?: C3 }
+ k! z$ }% W2 G
$ W6 c4 R- y8 t( |& ]4 A
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 01:04 , Processed in 0.135666 second(s), 21 queries .

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