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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:1 U! m2 u) q) k% ~/ k
  1. #include# h4 p7 S# ]: s, I6 S
  2. #include
    & |, |+ c2 M( i9 u  V' y
  3. #include
    " F9 W2 _( E: \7 ?+ V( @8 I9 \/ E
  4. #include
    2 P. a2 C8 H  a6 {' G' y# O6 f
  5. #include5 [8 m" S3 v' N# q$ W# g
  6. #include6 R  }; ^' u% k' c) r
  7. #include
    ( w5 q" D; b% Y4 l+ y& l1 F/ U
  8. #include
复制代码
, K0 b2 [- Q2 b# C  `, A9 p) O
" F& p" m: x8 H8 x: g$ m; F
服务器代码如下:
& u% }+ {7 ]; X) ]' R
  1. #include
    + ?9 d8 M: b2 i0 z1 \; A: i- j! D
  2. #include
    # p  G0 Z, G- a  h: x: V/ u
  3. #include
    ; G  J' W, S4 H
  4. #include
    4 f( t+ G8 Z) _
  5. #include( O  R8 y1 I" M* T# q
  6. #include% X. V+ b2 }5 C
  7. #include
    4 o) V5 z2 K7 u' |0 r
  8. #include
复制代码

) t5 g; Q1 o. l+ J  m$ M3 t! b' P7 Z8 L+ _% R7 l: _% w7 q
* a- K" C* a* g5 V- I( N

$ w; N2 p3 [3 q3 q
5 {7 K% |3 O$ h

$ ]6 r6 N  |" i! _4 ?5 H/ U# Z9 I/ k1 v' ~( ^3 c

: M9 i( h; S6 d3 i$ ~+ g0 q7 Q# a" q# ~) I0 w; P: V2 ?+ o: C
0 n& _( `* H: C3 }* C6 n
1 K$ ^1 b' B3 n/ g7 e9 ~* |9 K
  f3 M  v1 {% |* Z% q7 R2 n

& n% m6 S" Y- a+ L7 i

4 k  O- C! D# B% e' u# a% F$ S
+ Z9 [  c+ C! c0 d: \, G& o) n

: Q0 D  n3 h( ^, N! l
1 j% Z& r% U/ u* m
' \) i/ W  X- T6 V1 m& x
, e4 w& ^! [/ d

% x) [! e+ F. k( {, z  |6 l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:/ G  f: j* g$ s- T1 U
#include <sys/types.h> 7 {9 k5 F0 @; J' o% F
#include <sys/socket.h> * O4 ]2 |' L5 ~! D/ u6 L
#include <unistd.h> 4 I4 p) W* `' y4 T4 a6 o8 S" i/ D
#include <netinet/in.h> ' R1 [4 p( V4 d4 j% O
#include <arpa/inet.h> 
9 R8 z2 Y9 J5 P0 Y+ x#include <string.h> 
% b7 z+ ~7 g" }- l) o" N. i#include <stdio.h>  
8 Z7 k' p. X9 C: F9 Sint main() {) L6 x) K. J% x% U
        int sockClient;
. `5 T6 h3 N$ [3 S' l" d        struct sockaddr_in addrSrv;
3 m* d$ B3 {3 L) \+ A" G' d& Q        sockClient = socket(AF_INET,SOCK_DGRAM,0);0 E4 e3 x$ g" Q- g0 i# S1 S$ \. t
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
3 N9 N4 i7 a+ ~* N8 \4 |/ z        addrSrv.sin_family=AF_INET;  P2 e: u2 J/ O# D5 D
        addrSrv.sin_port=htons(6000);  M4 H+ ]' Y$ l: K" H
        while(1)
* ~. B2 ^4 w) V, s, o        {
+ U: R) J& b& D, ^5 x7 p: ?                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));$ |2 @# m7 \9 i+ X; Q  m1 [
                sleep(2);
1 G5 X) C) q8 E9 |/ E        }    ' b$ k3 B+ R& d3 {0 V
        close(sockClient);  
0 b8 l2 N- G9 |: r; r        return 0; ; Y0 {% \. p/ W% S# e$ ?5 |
}
/ ^1 s3 K! K7 y/ V1 ]3 x% T  V. x6 d* L8 J- F

1 g6 a) y( v4 A' A# p$ i2 g客户端:
  1. #include <stdio.h> 8 U! X+ V: O' z4 |  q" a
  2. #include <sys/types.h> 
    7 `) K% V2 R# {" c$ w7 q
  3. #include <sys/socket.h> 3 X. O7 {- L' `, _) _7 t, @+ {+ p4 F8 p
  4. #include <netinet/in.h> 
    . I: b2 q* X  [& P  ~) v1 Z" K6 ~
  5. #include <arpa/inet.h> 
    9 c6 b7 V0 P* b
  6. #include <string.h> 2 _. i+ u# C- J& H' j
  7. #include <unistd.h> 
    4 a) J+ D  j( g' @: C. l
  8. #include <fcntl.h> / B1 p; ?" A# T* ]- z
  9. #include <sys/time.h> 
    ; E1 R* w; V9 i
  10. #include <sys/select.h> 
    7 i0 x# E- w/ w
  11. #include <sys/ioctl.h>  
    2 f" F) R4 o+ E% n1 g3 Y
  12. int main() {
    + G- j! V8 S3 Y- n+ P+ Y: x. k
  13.         int sockSrv;
    9 I6 W/ y8 `6 O% R
  14.         struct sockaddr_in addrSrv;
    ! `8 B, ]) I0 _. E
  15.         int len;
    2 U6 `) S$ j% Q- a
  16.         char recvBuf[100];" ~; ?' C) c+ W
  17.         scanf("%s",recvBuf);
    6 s3 h2 b1 E# `) r/ ~. {, \$ b
  18.         struct sockaddr_in addrClient;! J" S0 L, j  A( m) _/ V
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);) ]+ J7 E& c7 c( j+ x3 ]1 ^
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    : y9 I! |- u- p$ C3 k$ R
  21.         addrSrv.sin_family = AF_INET;
    ( a* {# b: z: p" W
  22.         addrSrv.sin_port = htons(6000);
    5 }9 M1 d% a" F% W
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));* A" P2 k; Y6 p% n
  24.         len = sizeof(struct sockaddr);( L& z" T4 v& O
  25.         memset(recvBuf, 0, 100);
    ' I+ e& T* h5 b2 g
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    + w! c5 M0 `& R* g
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    9 ~% x# l5 v1 `# F- G% M
  28.         printf("Client data is:%s\n",recvBuf);
      T6 J9 U, h7 n: e, U- P
  29.         close(sockSrv);
    ) b4 J; R$ g& i& @3 m$ d
  30.         return 0;
    ! m7 N  O- A% P$ [- m
  31. } 
复制代码

- f$ B& _- z7 Y
$ t& A5 a4 B8 i0 @  J: L6 D9 g8 r6 ~3 ]( r" R

6 ]0 s0 _0 C& j
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-21 02:05 , Processed in 0.050244 second(s), 18 queries .

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