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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
6 g' S7 b9 K% X. d% ~) a
  1. #include' [5 c0 E/ \5 n8 D1 J
  2. #include+ {% V" q+ G& J
  3. #include
    $ B$ }/ ?! i2 `- D4 _
  4. #include
    3 `( x- W, ?; A/ n' W( ?9 o) h1 w
  5. #include
    3 v& E1 V  W) E& M. j- k$ p2 h
  6. #include
    ( q% A9 A( ]+ n- _. y2 f) e8 x
  7. #include
    4 z* g- D! H, s8 e# s) K
  8. #include
复制代码
- g7 R) N/ a2 _5 O4 j$ _' p7 i* l! y
( L/ a, {% ]5 B. z8 g
服务器代码如下:
" F7 @4 y7 K+ K# L* x+ T
  1. #include/ F. r& K1 S- u+ o* k# U
  2. #include
    $ i2 P9 f/ ?* d  }. S. |
  3. #include
    , u3 I2 ^6 V! x& J) R: s( K
  4. #include
    3 `& d" e: l+ D$ ]; Y% I3 P2 B
  5. #include
    * q/ }! D( S' b, I. p- {: U
  6. #include
    ! l6 m6 r. P( _2 {9 e
  7. #include
    , m% i5 V  x' q) v" l
  8. #include
复制代码

$ `7 P( g! n  i, z6 X6 s) Z1 q" M: i: }! k" b5 G% M) E
& d3 ^$ N) P9 x) E
7 k6 j4 K8 _1 h4 d- a

6 p. q* K! @7 u& u) P2 U

/ k) k6 j) \2 w2 O8 p/ A" n
+ v0 h/ Z! ]* U, v, [9 f9 N
+ H5 T  m8 I' h! d$ I/ k

$ c% R% d- r; ?7 S5 ^. U8 P
: n/ u) d9 k3 s: _/ v0 t2 l* B2 |
2 ?0 U% L6 ^% |2 g6 [& u" z( y

9 Z0 O" e8 G' F" V  G; W( v( r4 x' ^7 U# k3 M$ L8 m/ v5 ]
/ |7 ^  o3 V0 P

4 E( n5 H3 L5 T, R

9 P) v2 z' |0 N! W* R0 X6 M0 N. G5 w" n: e
4 J! k8 _8 g1 `% X- r- P2 m
$ m( q8 B3 j7 u

( ]* L7 {3 l1 K! W; z# |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
, V+ b- V, g% J! ]' @# j2 P#include <sys/types.h> " V; _) v/ ^5 }
#include <sys/socket.h> 5 J3 C4 E! ~- |6 P: ~
#include <unistd.h> / b7 a1 a" e# v( m0 v2 J, [
#include <netinet/in.h> 7 d+ T% ^( i; q. M8 `
#include <arpa/inet.h> 
& @! C( q+ U9 c- p( i#include <string.h> 
' R9 p0 b  W! p; V1 S#include <stdio.h>  
0 p0 p# a$ N5 K) R! t  iint main() {
! h" P3 c; g+ o: Q        int sockClient;: X0 y" }8 a. l
        struct sockaddr_in addrSrv;
! A7 z. G5 H; y/ T3 Q! `        sockClient = socket(AF_INET,SOCK_DGRAM,0);, y* H+ c( x/ o! U
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
1 P1 I8 @) S  m% t        addrSrv.sin_family=AF_INET;5 J3 |: H% H4 l$ v1 Y
        addrSrv.sin_port=htons(6000);
, T: k4 E6 d" T6 [        while(1)
) I7 N7 G' P' X6 U, u        {
8 s( m; N. g+ T# k. y/ w% Z                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));" v- T: o6 s! f5 f5 M
                sleep(2);- g- w+ m& I  r
        }    9 y! I! }, Y3 q2 i! ^( A
        close(sockClient);  ) i5 ]4 E6 f( z0 Y/ R* Y9 k, a
        return 0; 8 q: k0 a5 n" l+ Q6 n
}
  A7 {! V1 ?" _2 a2 Y8 F' O; V7 a) K1 Z

& F4 V+ f( p; b4 s# v客户端:
  1. #include <stdio.h> 
    8 P' z0 }: d- A' C* _9 N
  2. #include <sys/types.h> 
    % ^6 H5 d0 Y0 q/ Z5 `- b  n# O5 l/ k
  3. #include <sys/socket.h> 
    * c; R, N6 e; o  N) E' _
  4. #include <netinet/in.h> 
    5 {* p( A4 M1 j7 e" f# E
  5. #include <arpa/inet.h> 
    1 R: S! W5 t- b6 o3 y
  6. #include <string.h> . j0 }) j$ _/ g5 t$ y% a
  7. #include <unistd.h> 
    ( T% U0 y- Y  J% X# a3 e
  8. #include <fcntl.h> : z" t) q( j7 b4 `2 s' Q
  9. #include <sys/time.h> 1 X: d; L% [2 M1 J7 I! C' q& B: S
  10. #include <sys/select.h> ; e+ N  J6 C/ a3 l( W6 l9 Z8 r" w
  11. #include <sys/ioctl.h>  
    6 |* @. a. }$ J; K7 J$ K9 X
  12. int main() {: d. j0 g  ~0 C5 z, ]* e
  13.         int sockSrv;0 h+ e  p1 a- |5 F8 ~
  14.         struct sockaddr_in addrSrv;6 ]( Y6 O5 e6 y1 m" ]
  15.         int len;
      e% F  k. A0 D& L+ i5 h0 B
  16.         char recvBuf[100];
    - C2 a. ~8 D5 Y; N, V; J
  17.         scanf("%s",recvBuf);' A) Q4 O+ s+ a7 J2 l7 Q+ z
  18.         struct sockaddr_in addrClient;) y7 H6 P# k, M5 \  B
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);$ h! {8 h7 g! w% K+ B, `6 @0 ~# O* n1 j
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    $ ~% V; c9 |8 N0 o4 f. f8 G
  21.         addrSrv.sin_family = AF_INET;2 N6 s6 m4 r: e0 a2 F/ S! e/ v8 o5 l
  22.         addrSrv.sin_port = htons(6000);
    ! `- V( d" Z# Q1 S+ D
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));" u/ V) k+ `4 K( ^, B1 L
  24.         len = sizeof(struct sockaddr);
    4 \+ f( S( j2 E7 S$ H) {8 [: D
  25.         memset(recvBuf, 0, 100);
    3 {( y1 S9 u) G6 F- r2 g
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);$ n& ^7 H  \% U' W4 y5 X6 y2 Y- X
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    8 ?1 E, D/ O- m# c9 ]2 w
  28.         printf("Client data is:%s\n",recvBuf);9 v1 ?$ E/ x: e3 D3 u6 X! H
  29.         close(sockSrv);! Z! o/ O% {/ Z4 s% O( Q8 G2 W5 x) A, ^
  30.         return 0;; E4 Y& Z% V4 L2 D, |7 R
  31. } 
复制代码
5 Z$ T  k( q8 F/ R- `- ?; x& h

$ i$ a" e6 A1 P6 v- J4 P) A! O# o- a

6 d2 M1 v9 M$ B( B! b- h
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 22:09 , Processed in 0.107885 second(s), 18 queries .

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