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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
6 x! T  e2 l7 @, k
  1. #include
    0 ~0 H' v7 j; u" @
  2. #include$ Q9 k5 a4 q2 {; n: B. F( e: c  c, t
  3. #include
    6 Y/ [& D: N& N$ l8 {4 Q
  4. #include
    # q# x( [  @0 O  ^8 q! ?
  5. #include
    * F$ q/ Q- R( g) m+ }
  6. #include1 n4 ?, L& G) k
  7. #include
    ' D% B4 k* G0 k- P
  8. #include
复制代码
* I/ U0 b8 T( L( {( H

  K5 g+ Q) [5 m8 v服务器代码如下:/ H7 H) h6 x$ y- _. ?  k
  1. #include0 f: F4 K" ?7 @' w
  2. #include; U0 m) ~- ~7 I1 a9 t$ G2 d  V
  3. #include# c$ |( w" [" o4 `6 y) n
  4. #include
    8 `" ~, e/ a2 u6 E( Z# t3 x
  5. #include- [1 v  n7 d( z" X; T5 X% [
  6. #include
    + |8 W  Y, z- i5 G
  7. #include
    6 O& g" a6 l' j; p
  8. #include
复制代码

4 K) u, T+ `$ m8 s2 g% }# Z$ ^4 z' m& j

8 ^: n. b2 ]0 u! A' u4 _

2 j/ f6 [+ f. \! f7 A4 R* t! ^3 D9 z3 q
0 C* i% \( {7 D9 _  z3 V

0 W# \; I1 s/ [" J. ^/ U' @7 Y
. j1 q! D  f8 m# _

3 g6 Y* u# E& q5 r% o/ n8 F: l  n+ d

# T7 M! H9 m0 q( D. j2 S$ H2 \: P5 e* \7 q6 k5 ~
; j& C4 E8 Y+ }8 q8 ?9 h* {; E

6 g% A  l9 S9 e, h- \3 d
/ z/ `: g* m4 o3 y, W  S0 F
) W5 l4 P4 S& u# L

9 e4 H$ Q8 E  u5 _, G* W; W! h5 P' h$ M  ^. s# w

6 ?# }9 {4 a- Y& f1 U% g2 @. r+ o
) ]6 Z% z9 m1 ?% n5 A# r/ k

$ Y9 o+ k8 v/ n. }! B- m/ k4 Z6 f" E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
: n7 a+ g/ U% y: y* O! y( Z4 |#include <sys/types.h> 9 v/ x- b! R2 t- _
#include <sys/socket.h> & H8 D3 W/ `' w5 B, y, E
#include <unistd.h> 
  ^; q- |- W( g4 r#include <netinet/in.h> 
! v7 o9 o5 m4 s5 X  d9 n#include <arpa/inet.h> + U- H3 e! E) V
#include <string.h> 9 e; Y7 u* |; P
#include <stdio.h>  
# [7 @6 O8 x7 eint main() {7 t. l. C6 Q- Q/ B5 b- ~) Y6 l) {
        int sockClient;5 ?9 t, B+ j7 h2 y* }* X5 [( m
        struct sockaddr_in addrSrv;
, o3 }$ D+ _+ P        sockClient = socket(AF_INET,SOCK_DGRAM,0);8 d2 }0 y* ?+ l1 W" ]) E
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
& o5 Y$ G" Y7 ^; x" {        addrSrv.sin_family=AF_INET;
  I, x  Z  e& ~0 ~* \; z        addrSrv.sin_port=htons(6000);
; X% g4 X) @; Y+ E( B% Z" ^6 X8 R  p+ _        while(1)
" ^8 O) @5 {( |1 m: F( g        {% ]+ |0 J% e  q- V: @+ d
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));1 G) e- q  W5 m) V0 ]. K# k
                sleep(2);
* ]# Q6 w+ y# Q& Y        }    5 ^7 B( Q7 f9 e* k
        close(sockClient);  5 T3 C* q+ K* A' @4 k- C
        return 0; 
+ q! i4 |6 z8 z}% X6 g; f; C% A, N

. D# t, b! J5 A: j6 o. Q& [" u/ R$ X1 s# M6 u$ q, Z2 Q5 d
客户端:
  1. #include <stdio.h> 
    ; `/ B, p6 O+ f2 E
  2. #include <sys/types.h> 7 k7 J$ _3 m6 t3 u0 A6 p) t
  3. #include <sys/socket.h> 
    2 Q/ I- G) C9 w5 S8 X8 ~6 f/ ~
  4. #include <netinet/in.h> 
    ) s" e/ v, R1 i% h# z1 f5 G
  5. #include <arpa/inet.h> 
    : o! ~: d4 b1 D) e8 n3 [
  6. #include <string.h> 
    # H7 _/ K# D. G
  7. #include <unistd.h> - n$ g, Y0 J  {& H
  8. #include <fcntl.h> 
    ! l7 ?2 S( }6 p2 h* K& ?
  9. #include <sys/time.h> 8 D; d4 _' W7 I2 P  |
  10. #include <sys/select.h> 3 z- c3 ]5 S  ^4 R% t
  11. #include <sys/ioctl.h>  
    - _( }, E; k" y
  12. int main() {
    & |' i0 \  \0 G8 L
  13.         int sockSrv;
    " A( \8 @* M! \5 V' ?
  14.         struct sockaddr_in addrSrv;
    8 {8 ]1 N* _8 [; @$ j" i3 _2 b& A! u
  15.         int len;/ s. R3 P& F+ I7 X* o& h& n
  16.         char recvBuf[100];
    ! [0 Z' a( t6 T) W+ A- `1 Q
  17.         scanf("%s",recvBuf);# w* j. Y5 U! g* K; I8 V( N# w& D
  18.         struct sockaddr_in addrClient;4 U/ d. H3 r0 R' \
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);# M; n' U6 }; P( A( l
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    # @8 ]  V" H; G/ d) i
  21.         addrSrv.sin_family = AF_INET;
    ! V& b: U8 k/ K
  22.         addrSrv.sin_port = htons(6000);
    " ?* l  H9 F/ [
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));. H- f2 R9 k, T% X" |, b
  24.         len = sizeof(struct sockaddr);1 {% E5 x. s  u
  25.         memset(recvBuf, 0, 100);
    8 o8 R) I$ R! o1 f& |
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);$ ^% C, ~4 C( q# F6 i/ L
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    * f: n) i% x  I+ D  h0 I
  28.         printf("Client data is:%s\n",recvBuf);, k* X5 x. r+ U7 h6 k4 d
  29.         close(sockSrv);
    " I3 t7 ~' v0 A4 Z! n& D9 a
  30.         return 0;# [  j1 A3 M+ ~
  31. } 
复制代码

3 [* M7 a: v) _% d8 u
$ W( }, q- c1 ?5 v( v
8 q  z1 ]) m. C; u1 @" l' a# T& R) _7 Q$ J+ j0 M9 W
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-22 04:10 , Processed in 0.057098 second(s), 18 queries .

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