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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
, O& o! e" S8 x) U( E1 f
  1. #include; ~. ?  I# e* ]! ]) t7 O
  2. #include9 b3 P( z: g, f" o
  3. #include
    . ?* P6 u% G6 M7 K
  4. #include8 m& y" \' y8 Y9 K  |1 w, j3 o
  5. #include
    ! H4 x) y2 V9 @  Y" M9 ^( l
  6. #include
    6 ~2 n1 T% h5 b
  7. #include7 d7 j7 I) C" _0 o( L: `
  8. #include
复制代码

/ S9 @) v( Y/ u/ `9 e  V1 }
7 P/ _% e3 e. s. H! D# w服务器代码如下:' k# O% m8 K, I( H/ C
  1. #include2 f: U9 U2 N0 \
  2. #include( ]" [0 D: ?. k5 V9 s" u
  3. #include
    5 i( |# |2 P1 J  {
  4. #include) X4 X% Z1 C6 u, l0 L$ a  t% U; I) _2 r
  5. #include
    3 f# i& r' j4 E% `& ?
  6. #include
    8 ~; n/ a+ X, R6 N0 ^8 {
  7. #include4 d* A3 V6 ]" O9 o8 F) M
  8. #include
复制代码
! |+ [3 Z9 N' o* ^
7 n7 x' a$ k5 q

4 J+ S8 G% w. M( [( f: @$ j( [% [

/ _- \* B# e2 H- @* C1 N6 Q8 j) N1 @# ]4 R
1 ^7 r+ U/ T% N4 C% Q! m

" G- y& ?, }! ?- U" g5 s$ N  C. C
0 p0 b7 m  c* Z" i1 u, F9 H5 v
6 {1 |* I# ]( V; W& e! v
& i, a; W7 v) h$ l
9 H7 Y$ ~8 _6 j

  y2 R3 \5 D6 w. g% B, c* V$ `2 ~9 K: k; P; j: f3 K: ]- L. B

5 B3 V# [# f  \  b' H1 k0 Y# e; n) Z, j7 F

7 ^7 X% c5 U* [1 D# g& y3 J9 C4 _
' p3 l3 Z9 c- O" o6 W/ {
$ }" N; @. T" t* W1 Q. T) G
& |7 J! e) m2 ?; [& z. r
; [2 `( W' ]% w% a3 q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
5 A' \& V- n5 P2 G#include <sys/types.h> 
3 ]6 F, @% k2 A& }#include <sys/socket.h> , j: G9 j3 |; M8 l3 e$ n- z
#include <unistd.h> 
/ I' J5 D4 X- _# ^8 Y  ~  H/ V#include <netinet/in.h> ' a# l* W/ e) h) B) l3 u# i
#include <arpa/inet.h> 
! W: _! ~  |( F! h#include <string.h> 
( N3 A& l  b( w- y% x1 t#include <stdio.h>  
/ j7 E3 m! N& k# Mint main() {& p+ _7 R) K, p3 g& r
        int sockClient;4 I. d* t1 L' M# R4 M& J
        struct sockaddr_in addrSrv;. Y7 P% W; J2 v
        sockClient = socket(AF_INET,SOCK_DGRAM,0);$ R4 q" |6 G, Y/ M+ Y# e( X
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
3 `, Q5 D" f! `7 b" B9 p        addrSrv.sin_family=AF_INET;
1 O! j/ _9 Z# I6 P- i# E+ _9 @        addrSrv.sin_port=htons(6000);! d6 b" j7 ~. Y6 a' b3 h4 P: z
        while(1)4 m3 k$ v, U2 B# S1 |. [
        {
  O5 @) [8 W4 \; C, h; n                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
7 i* k/ {2 C' c: ~/ E. _, r                sleep(2);
: \( g* T' e5 t2 v) X* J: ?        }    
, A4 U( x7 E6 N2 x' q4 V        close(sockClient);  . t" V7 t7 q0 A3 x4 R
        return 0; 1 j$ z) e* b  `5 {& z
}
' Z" m2 }; q. P+ [) g
- @# ~: ?, {& G  T0 e
0 F: ^# d& q/ W# K/ `4 k; I% G客户端:
  1. #include <stdio.h> : K4 j* `/ z( E+ p
  2. #include <sys/types.h> 3 q8 t+ E$ G( n! x' {
  3. #include <sys/socket.h> 
    2 E9 j! H5 L1 S6 z" w1 Q
  4. #include <netinet/in.h> * d6 Z: u* ^$ M$ o1 ], g6 ~% m
  5. #include <arpa/inet.h> 
    ) M5 S7 o  E2 j$ T
  6. #include <string.h> 
    8 h* n5 v( L. ]3 c% v' X" t
  7. #include <unistd.h> . N/ T" p4 P1 E! \4 c0 T$ V( h4 h
  8. #include <fcntl.h> 
    6 r) ]  I5 l: q/ d9 F! _5 H
  9. #include <sys/time.h> . N3 I. P2 c5 W# ]( Y; c
  10. #include <sys/select.h> 
    ' \2 H% O  `) H$ x2 I/ w
  11. #include <sys/ioctl.h>  5 R, W, y3 ^; d0 E' f* r0 g, T- Z+ [6 d
  12. int main() {$ T- i+ Z; x( U: _
  13.         int sockSrv;, x% T+ A) K3 f; o4 R/ O3 Y
  14.         struct sockaddr_in addrSrv;
    0 f( G  y5 q6 \- @: G  S
  15.         int len;
    4 I& ^8 o2 ^' ]/ x: [9 k: [4 o
  16.         char recvBuf[100];: @* X% [. ]7 S' B# N+ e7 p' V
  17.         scanf("%s",recvBuf);, |+ s- R6 G, G: X" o. ]
  18.         struct sockaddr_in addrClient;
      `3 ?% N9 e8 `+ x& w  k
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);7 `1 U3 e" e+ }" L0 |' J
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);- S2 P* T( `0 K( a1 @3 F
  21.         addrSrv.sin_family = AF_INET;
    2 }0 G, f/ I. [
  22.         addrSrv.sin_port = htons(6000);7 m2 }9 o" x/ k, B: _! I
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    , g3 X+ p8 p3 _; I$ a* c& A
  24.         len = sizeof(struct sockaddr);
    " J. m' o6 [6 P* q. o& d
  25.         memset(recvBuf, 0, 100);
    4 U) R( d' `1 H1 s, @  f9 q: s
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    6 E4 _! I* C7 ^: T
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    % W" b: t* P6 V( K" B# z
  28.         printf("Client data is:%s\n",recvBuf);
    , F5 C0 p! _" y" S
  29.         close(sockSrv);) c2 C9 D) q. U5 H
  30.         return 0;3 Q* M: R" D& a
  31. } 
复制代码

" A; @% G9 r- K& D& p$ b
. l6 f. I3 ~+ a" T  P( [" `& t
/ Q% J4 {' L' z* ]2 n  `# a! M
2 @1 ~6 }3 d! T# O" ?; [
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 14:45 , Processed in 0.080771 second(s), 18 queries .

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