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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:8 q& z. Q% R5 o* y- o% Y
  1. #include4 L+ j( K+ ~( g' Q2 `+ D+ R
  2. #include# p+ S0 ?. v  K" [% R' k2 m4 A0 f
  3. #include
    & [" v8 U1 k3 |1 |
  4. #include
    6 j2 r( E" U# ~
  5. #include8 M3 c' X3 h' X7 \* s3 D; @/ ^
  6. #include3 h* a; |: n& o6 ?% u* u/ [3 ?
  7. #include
    ; ~; m+ a9 z! F. I
  8. #include
复制代码

3 ^& @% }+ X. T& d
( u' Z; T/ F7 ]4 P! b9 Y服务器代码如下:! a, M. c4 g$ e  d9 g( V* U
  1. #include
    4 y& f1 @, J  Y6 G7 }$ R3 n
  2. #include
    & W* _, F! s' j; o" {$ m
  3. #include- f8 e3 |, r4 d1 }8 y  Q0 C
  4. #include; q3 \8 O  ?- O8 T  @" V
  5. #include
    + q) K; [! A$ X4 Y: X$ T/ C4 }
  6. #include6 i% \/ a; _8 A# @' H' o
  7. #include
    : d/ D6 t; W/ J* z3 J* w' x5 z" l
  8. #include
复制代码

1 D6 n8 ^$ f: f" ], o2 s6 q- V8 y
& d- M% |! e9 r  ?9 j) C
( R2 B' p1 ^2 J; m+ V
; M, b; f3 l6 B6 S
. W5 [2 {0 y; [8 Z# T8 v/ {

2 i7 M/ M! @* u* G7 I1 R) o9 A7 ^' O( g

6 m5 e7 ~( P& d! {
( t% P' y$ ]6 k. c, _
# }1 k" m! R" L  f
' Z- ?+ W6 ~' `# G
- c+ I( z! e+ V1 {6 p) J3 a
) R. ^' A0 m9 c0 T4 v: X
. _7 U& f. M% R9 w
/ `  c$ {& p, j3 j3 a6 U- B

% X$ j2 U7 x1 m( ]" Z6 a* @( v1 n! @, O

6 [! g- S! K/ T# _
* W: I- j( D8 t' H/ w3 M( J* B

& [2 r/ @% Q! W9 R* q* o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:3 D: G  J+ w/ y& }
#include <sys/types.h> 
  @; \1 B' j8 P3 F$ ^, c#include <sys/socket.h> 
. R7 M' t4 v3 b+ q#include <unistd.h> 
" g1 B7 V2 P; b* d  ^! F#include <netinet/in.h> 4 d) J$ F. S4 ]; q
#include <arpa/inet.h> 
8 O) w; y2 ~" Q; ?7 S& O#include <string.h> 
% z$ U" C4 I: @$ R- ^#include <stdio.h>  
/ M3 O5 A) k  Iint main() {. j; O& S, U$ [' r! R0 D
        int sockClient;7 q0 z2 d; K% F' p
        struct sockaddr_in addrSrv;
, p! P. |$ v& {6 H5 @        sockClient = socket(AF_INET,SOCK_DGRAM,0);0 i/ P0 K1 S: `/ m& m3 d) ~5 ]
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");" E9 l4 A1 |2 }
        addrSrv.sin_family=AF_INET;, v. p& f3 L! ^. a2 I/ E4 n
        addrSrv.sin_port=htons(6000);
0 t$ D: j7 w3 h  y4 X- d6 P        while(1)" Y1 v' k4 l/ k% h- n" e
        {
" A! P$ [9 u9 D% g9 L' }                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
, d) e: Q" e1 A0 G! o2 u                sleep(2);
' c, l3 |1 G1 ~% F* k: h        }    2 A1 R7 W- r/ D2 l6 T# w. }0 ~$ ]. R
        close(sockClient);  9 c6 W+ G" m7 W: n, ]4 N# d7 ]
        return 0; # _' X( L5 m! P  _. F% p
}5 O# G. |" u& |" s* ], m3 P9 ]0 Y+ F
, A$ U7 b; f( C
3 N; x* }" w$ c0 y; }
客户端:
  1. #include <stdio.h> 
    5 `- p0 d8 p3 M0 Y9 A
  2. #include <sys/types.h> 9 w% x4 g9 W- |3 e* [5 @+ f6 V
  3. #include <sys/socket.h> . {+ j5 T! S2 {
  4. #include <netinet/in.h> 
    : Z* q+ m# y8 R) E; P8 S2 ^. c
  5. #include <arpa/inet.h> 
    2 a: y. z) `" v( I$ Z; f! V2 j
  6. #include <string.h> 
    0 u1 r4 @% D1 f2 |/ Q
  7. #include <unistd.h> 8 U% q' ~" S( h/ x* P( N1 m5 U
  8. #include <fcntl.h> " S8 f8 G5 h2 }4 Z  c7 H) t
  9. #include <sys/time.h> 
      v( Y) K' a4 n  L2 w) X1 X
  10. #include <sys/select.h> / B" _; K/ h2 ]0 p) f
  11. #include <sys/ioctl.h>  
    % L( [& w0 j' Q4 X5 I0 w
  12. int main() {7 o9 d' t5 y! y6 U: e/ p
  13.         int sockSrv;! `$ b9 L; _5 j: m) d
  14.         struct sockaddr_in addrSrv;
    3 o1 s8 k! z' k9 f4 J$ z2 e
  15.         int len;
    9 ]" i' b: V1 z, x
  16.         char recvBuf[100];
    / H! Y' t1 W% a! `' z! Y8 x, z7 q
  17.         scanf("%s",recvBuf);
    ( E, t+ o, z4 w: x" i* [
  18.         struct sockaddr_in addrClient;
    6 a. k0 f/ U; x- Z
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);7 N* z; n  a% `9 s' O  x
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);* r  U2 g4 O; I! S
  21.         addrSrv.sin_family = AF_INET;
    * ^! e! O3 {  o$ R
  22.         addrSrv.sin_port = htons(6000);
    0 V# t' {  t+ ]9 B7 T" a2 ^; W
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    ; w" s7 X& J9 ^/ y$ }
  24.         len = sizeof(struct sockaddr);5 _) K) \0 u9 ~8 S& K
  25.         memset(recvBuf, 0, 100);: k: z7 w& m7 k5 K- E
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);! u* r2 z2 O$ n
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));- }8 L1 `3 D0 w# ?) Y: L3 g
  28.         printf("Client data is:%s\n",recvBuf);6 H. B3 Q" Y) Y2 ], m  E
  29.         close(sockSrv);
    - Y+ ]  K2 M* K% b/ n
  30.         return 0;
    - v8 Z% B" ]1 Q6 e' \9 w
  31. } 
复制代码
' G7 t# `  u' X5 Y
; u& h; S; b4 [' g9 {5 h

- [( n4 o( D/ f! E3 [% V4 I: M- ]) k8 K6 b/ t7 a" S
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-4-30 23:22 , Processed in 0.059653 second(s), 19 queries .

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