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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:8 h; M; _+ f5 D# [' _/ @. ?
  1. #include
    2 o5 C8 C/ u- s$ j4 a; R1 e
  2. #include$ z; x" v+ n5 r2 X) J- a; G
  3. #include
    : p0 q# y" {3 _8 k6 B8 s% v
  4. #include
    + X" w6 o( I( B5 N5 C
  5. #include
    - J9 V$ _1 Z+ h# K2 H. ~* E4 J
  6. #include
    9 l- n# C3 l( k) ~  v) N
  7. #include
    ) z2 |! t/ ^! |/ ^% C$ u
  8. #include
复制代码

" [; Y: o9 O9 m; A/ t9 ~' J
* k/ A; a, y) B. S服务器代码如下:
5 e# ^2 \% _- ^
  1. #include9 A0 U0 t, J' a% _* c; Q  t
  2. #include
    3 e6 E- I; B1 S# Q2 r, z
  3. #include
    ' t- j' }* E% M
  4. #include9 {8 t# s7 [+ W
  5. #include
    ) M# L: r3 j  k; Y% R) f
  6. #include
    . ^0 I+ |; ~/ R( C  S% g- `
  7. #include
    & {# z3 t/ A5 U# Z
  8. #include
复制代码

. C( ^1 F: q2 A- A, ~# n! Y0 S  y- C: v3 k0 E& f: D
- ~8 G6 Y4 ?$ {5 o
# e7 B. x: E2 s
9 o% ?1 l0 z5 w+ H3 j* b+ @
6 O& t$ {3 V( [2 q2 j

( ^! H3 i) _  S' R  L# Z) |
7 |9 [" j" K& n! Y( _% w5 k
" n+ O2 V" \  d
% X2 m% Q4 s* T$ k; ?$ V
! W+ o4 I- q$ h1 |, c: q' J. _
7 e6 n3 ^( p7 D

" E5 A! l# ~5 h: E) O) [3 P
2 q' n$ a, t2 Q& T
5 y* v' @1 j: D" s/ }1 |

. A% d; O% e8 [" q6 C5 h  Y4 [7 b7 O* m! s6 w  U

& S1 `2 p1 o& ]' n' @7 @- K" g8 T0 B
- C% o- r$ @0 N6 q7 a8 y5 `& T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
& k$ A* i, j& L4 r  T3 P) @( q, V#include <sys/types.h> # M/ R3 z; H* }( i/ c5 e
#include <sys/socket.h> : ?: ]7 H$ \2 [! }; ]
#include <unistd.h> 
/ J2 @8 }3 F( ^% D#include <netinet/in.h> 
) }! w0 S3 O  }8 m" c* R. L& Z#include <arpa/inet.h> 
( t: r$ C' `6 f  X, N0 h$ {/ ^#include <string.h> 9 S+ ^1 P0 r- o4 B* p4 ]2 M5 y
#include <stdio.h>  : s* c3 n* O% h+ l: F& M3 H% Y
int main() {
& ]7 y( C" B  p0 H) Y$ ^7 x        int sockClient;1 ~4 R/ r' g, Q8 D0 s
        struct sockaddr_in addrSrv;
: y; P' [$ d% C: ]9 ^- d) K        sockClient = socket(AF_INET,SOCK_DGRAM,0);& C) |. B+ U3 s3 N8 y" t2 ^3 v
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
% f; Y6 v4 b( d% D" M( Y: p        addrSrv.sin_family=AF_INET;
/ Z$ z; u: Y7 Y2 G6 \3 d        addrSrv.sin_port=htons(6000);" t/ o4 J9 w% u9 |- V  ^1 W
        while(1)$ I/ |/ e, j! I1 s
        {
  a. {7 ?6 d0 [8 a3 T                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
: i+ P% s0 G; I! d5 D; J                sleep(2);
! t5 S/ T. A/ e2 ?, X, f        }    
4 ~' K$ m4 S% S" n1 ]! p: m        close(sockClient);  
6 q% c5 T( d# I0 i& h+ \  T        return 0; + O6 n+ U: H5 T% d* ~: P
}
6 g" r' j2 G3 S
1 j, R. p1 t  Z9 u, P+ U5 N: J
& s( _1 s1 n. o3 A  _$ d; Q客户端:
  1. #include <stdio.h> 
    ) ^: j, J; X' c# b: D& Z
  2. #include <sys/types.h> 7 @& M' l0 s7 w$ f' m! C. Z' J
  3. #include <sys/socket.h> 
    & p+ V/ g7 i' N+ b
  4. #include <netinet/in.h> - u8 N5 b% ?1 G3 S- Q2 L
  5. #include <arpa/inet.h>   G% H5 L4 b2 d( W9 @$ x3 \
  6. #include <string.h> 0 \( w/ c, D' N) q( x! f
  7. #include <unistd.h> 
    , ~! G$ G: C/ i% ~/ V
  8. #include <fcntl.h> 
    2 V6 p) L7 I) X+ Q
  9. #include <sys/time.h> 2 h/ U" Q3 |, f9 A+ J6 j* X( N; L
  10. #include <sys/select.h> : F) y% t1 m0 J& k. w
  11. #include <sys/ioctl.h>  5 C, |5 e) G4 ]) L0 F1 C  {. A  j& v
  12. int main() {
    9 z1 q& V$ `3 o% L: J/ A
  13.         int sockSrv;  _' k+ y% I% a. f( S9 l: {; N) z! H
  14.         struct sockaddr_in addrSrv;
    # i' \" f; y# N% S& C5 W) d
  15.         int len;
    1 X" S3 d7 \: }: b
  16.         char recvBuf[100];  R: s5 p* ]3 q9 M
  17.         scanf("%s",recvBuf);
    ; N6 L# u. L# y* r& P/ G6 e
  18.         struct sockaddr_in addrClient;
    1 q7 X* K" \& @' m8 M
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ' K" H' c' \( A, G& O
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    $ ?( {# s' l% E  h( R5 o
  21.         addrSrv.sin_family = AF_INET;  q) X/ e" L9 L" q
  22.         addrSrv.sin_port = htons(6000);' o& x. }% @7 \9 K0 T# Z& P& x
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));- r3 c1 r" O0 G; e
  24.         len = sizeof(struct sockaddr);; `/ L6 T) v2 B% L) V% i& P
  25.         memset(recvBuf, 0, 100);  x' F% G; e! |: ~4 s9 t/ j' N, R, x
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    , P2 b2 [( I0 o  e0 [* F$ z2 a
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));/ S3 r/ g; z  U) W2 u8 L( G% Q2 O! ?
  28.         printf("Client data is:%s\n",recvBuf);
    , [) Q6 ]% I8 g4 i7 [$ H5 A; Z
  29.         close(sockSrv);
    ( A7 O* m. z% r, w& r' c( B
  30.         return 0;# ]) o- e# F( c
  31. } 
复制代码
/ b6 G% G5 q* d! t

( A0 K/ a) o& y: a  {
5 {: Z' H. R3 w  ^0 x0 |% G7 s, O- Q$ K9 n2 v( d5 W
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 20:53 , Processed in 0.166170 second(s), 18 queries .

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