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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
& s4 P! r8 k8 D7 d1 k
  1. #include# a1 H. N, E. d: [; G
  2. #include
    5 u' p+ \! x  P1 G
  3. #include6 ^1 i3 |2 l& D2 c/ ~4 o; N
  4. #include7 C6 R( @# I" v
  5. #include5 Y6 B2 J! V$ X# p; T
  6. #include; g! A! z" f' E! p# Q* [
  7. #include
    # q: Y# x+ n4 h) x) `, R: s
  8. #include
复制代码
' a  g0 j5 ^% `- e5 t" S- `& T
; [* C- @" v: X
服务器代码如下:9 |% [2 U) T  C/ }; I8 z. m
  1. #include
    0 ^7 [9 N1 M2 l$ N7 d0 u% |
  2. #include
    ! M8 \; m$ a, |% }, J2 W5 |
  3. #include' L* r+ }' w5 x; U4 S0 i
  4. #include
    6 S# q5 P4 Y+ l  i+ T( j$ @
  5. #include3 E8 L  u- b* {5 r3 R
  6. #include
      }6 l! }- C" J
  7. #include
    / g9 |8 r- p8 ]" H9 s& h
  8. #include
复制代码

& R& L( q2 l4 T- J  A% Q
$ X% \2 R$ W1 b& _% q! u2 S: T
. P0 D4 Z8 T3 e4 D5 w, F+ [. g4 B

, t1 S/ x7 C+ b! [/ q% N4 u- Z
9 ?! ^, t+ G6 ?$ n3 O8 U, l
0 \) Q  j8 n6 J/ G
/ W/ f' p# m' M0 s# G( a

. h7 j' O$ V- d. @8 _3 n, }% |2 E& ]

- e6 U4 Q6 n* B! F6 f+ f/ E
  c& v) m9 y* b2 b5 l% q7 h) _

2 p8 P# i% K! N' Q$ c9 |2 f. g* ]- z7 M- Y0 {
6 }2 ~* W; I5 s+ y% I" ]; l, q: s. E
3 Q9 z) O" X! P& a3 h1 r7 I4 X0 D5 E2 W

( r5 R" Q' y+ [9 q5 T) w
. Y- y/ B. M7 l. n+ q5 ~
  Z: ]2 H8 [8 ]/ F% [
" a8 j0 `7 z/ F/ A+ B7 C

- J( c0 D; I7 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
3 t, O; [" _  L  K9 t#include <sys/types.h> % W3 L7 H  |; G- R- |
#include <sys/socket.h> 8 F- T/ f: ~  \! K% Y, r
#include <unistd.h> 
  b5 R% m% Y% S% C8 f#include <netinet/in.h> 
6 Q: g- t/ X  F9 h8 P3 A7 N#include <arpa/inet.h> 5 ?& g, c" ~# k/ k2 s" A1 q" C
#include <string.h> ; D& S0 q8 |3 _( g6 @
#include <stdio.h>  9 }1 ^) F6 {) e2 |
int main() {
" x6 o# ~: j4 K& f        int sockClient;
/ S  F5 d8 @; r/ W        struct sockaddr_in addrSrv;
% r& U( Z. n7 A$ m% X" S        sockClient = socket(AF_INET,SOCK_DGRAM,0);
* t# a0 U* u% o- J; g& j4 i        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");+ ?# D/ n4 H8 E% p7 B5 C5 A
        addrSrv.sin_family=AF_INET;
2 G/ x# Q$ O& x# d        addrSrv.sin_port=htons(6000);( g$ H- K' h" g4 q, d6 |# D- W
        while(1)
; _, b; g0 w2 R: Z  }" |        {
7 e! i+ K2 t0 N                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
5 X- ]$ |: q  K                sleep(2);5 V& m8 M8 X- b* ]$ }  \9 z
        }    " R2 d# u  y" F1 R' n" K9 S; y
        close(sockClient);  
. O; ^5 o$ h: R* [        return 0; 
) ^) i' u+ {, ~: o+ r' @. K}
9 h2 P, l9 b4 W0 Y& g- I3 p8 o  ?  f! Y8 e1 f

. f8 p: Y0 _$ S# X' n& L客户端:
  1. #include <stdio.h> ; s: q* B: o2 a" z1 n  c
  2. #include <sys/types.h> * j$ O* Y. n+ G' l" M3 |  s/ I
  3. #include <sys/socket.h> 
    * `5 x* ~& a+ l! C9 [
  4. #include <netinet/in.h> ! t8 m6 _( d* j; |% @
  5. #include <arpa/inet.h> ) v% @# P+ x; e4 ?
  6. #include <string.h> 3 k- _/ h. j  D. \7 m; r7 }
  7. #include <unistd.h> # [! ]- l# z" F: o- I5 U
  8. #include <fcntl.h> 
    3 M6 Z. g3 R3 p; L3 O
  9. #include <sys/time.h> ' g; c7 ^- k6 h; F: u* q% w
  10. #include <sys/select.h> 
    9 c/ L9 {- A  E: t1 _
  11. #include <sys/ioctl.h>  
    / K, g" u! o2 s
  12. int main() {5 K  b1 c9 V) g4 w  c) W! e
  13.         int sockSrv;( h7 r& I% ~, z$ Z. j
  14.         struct sockaddr_in addrSrv;
    8 Y5 s; U5 N: z0 N( N+ d
  15.         int len;
    # ]# |+ v6 t( T1 k+ N$ l
  16.         char recvBuf[100];
    9 e# _3 r9 w- m/ j
  17.         scanf("%s",recvBuf);3 z* y( Y* R- u! o
  18.         struct sockaddr_in addrClient;9 f- q. e8 `- J5 G9 R. h* [+ w3 L
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ( O0 }( Q" O( X1 _: @3 |
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    $ X8 W8 Y' {! h  D/ ?
  21.         addrSrv.sin_family = AF_INET;) E/ \2 d) Q5 j! a$ A7 F5 {8 C
  22.         addrSrv.sin_port = htons(6000);8 C# Z0 t+ w0 ^% q8 q/ F
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    " W; S: p* M3 ~
  24.         len = sizeof(struct sockaddr);+ m) G; f% s0 ?" Q
  25.         memset(recvBuf, 0, 100);
    : J" y; Y+ I8 s# V) l
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);& \% Y* C. P3 ^5 [5 U4 e
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    3 _2 V7 j: N% r; ^' B
  28.         printf("Client data is:%s\n",recvBuf);
    3 l+ ~; V* G5 U" W4 y6 g( q
  29.         close(sockSrv);& R  S0 v7 C0 A% }1 i+ j/ u0 L
  30.         return 0;
    - l, L- @5 X. u; y5 W* u4 e7 j
  31. } 
复制代码

6 c; M. b- \- Q  M) {0 _) G0 X0 P4 O: v, u* n) T

+ T- l. i7 E# v( `$ V3 i* ?+ h5 a3 E, V' [. A' ?4 |
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-4 10:47 , Processed in 0.071583 second(s), 19 queries .

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