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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
客户端代码如下:  n0 T7 Z0 e: r" J: G
  1. #include& S+ x5 W& w4 L$ I( T5 D$ J! z
  2. #include
    6 S( X6 H* j( A9 O9 }, u
  3. #include
    ( o( K( c9 _( K6 V8 _. b' L0 ?
  4. #include6 h( T3 c$ t4 w' p& V( ^  o
  5. #include
    : I  h) z. B+ s+ Y7 @! \8 z
  6. #include
    4 B( C, L, U* y& G
  7. #include
    ' F, I% @5 D0 l' `, }* ^
  8. #include
复制代码

) t( Z# [& H/ z" r7 ^
$ P* H: b; z8 Y5 w6 \9 ^服务器代码如下:, O( F' l% ?# a% h0 ^, f: R; A
  1. #include$ j5 w+ Q3 x* m8 o: J  i$ ?6 X
  2. #include. f4 H- v" ?. R" }) v8 u' d8 V
  3. #include1 }( [( w5 _; W
  4. #include
    ; O: @7 c1 z0 b0 F1 F+ X2 H. I/ C; J! u9 C
  5. #include
    " L7 v) L9 o# |1 l4 R( _
  6. #include
    7 \6 [  S) W# F' z; v8 E3 r
  7. #include3 B& [) F$ }& T8 m' T+ A
  8. #include
复制代码

' |( @7 u( S( _. p/ [3 @5 A" o3 d7 x+ d" f# `6 o5 ~5 _

8 y$ F7 q- j# L" f# f

- K- w4 i' R  ]: X4 Q7 F* p! E$ \
9 u2 [8 d: ?3 Z% r, O0 G

% S1 W8 G- K0 `
4 e. [8 j5 s# x) k3 n3 a+ Y

! c5 p( V, m4 I) n% T' C
/ I/ i" {" X* u( U' L2 W

6 N/ R6 Y% s$ U
3 L; K; M6 v2 g: l
4 D, L- V1 ~9 G  t* O0 P

) `# W" b4 K4 w6 o5 h" z& S
8 l% X% }: H/ z; }% ?7 y
3 j& @* L. I4 t  ~& w3 b. P/ ^' g
+ q9 ^1 t& v6 b; m; }) f% }

# C) c! p* p# b3 B4 y* C# }' F
+ t* y, p' t) [7 N+ N1 \

3 d. P7 m5 Q. N4 I7 D

  d+ C, j4 d2 s8 A' O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:- U! P% ^5 k# o* S7 x2 [; I
#include <sys/types.h> / V# }; K2 B( w# m  ?
#include <sys/socket.h> 
- s4 U+ a4 I' |4 g$ R! d#include <unistd.h> 
! e6 l# n7 ^2 W% Q. y2 x#include <netinet/in.h> 
* f6 T2 b4 V0 ^6 d" @6 N" k#include <arpa/inet.h> 
: P* M* a6 @6 d& a3 Z#include <string.h> : L- n5 ?- T. |& @" ^; P% {
#include <stdio.h>  * Z; F9 i9 ]! h7 _: \% y# ?; Q
int main() {
, e  Y+ G) C4 g        int sockClient;% e5 Q+ F* H* G9 U3 R( p( r$ w
        struct sockaddr_in addrSrv;
4 w' O: W, i$ f; c, ~+ {. b5 z2 J        sockClient = socket(AF_INET,SOCK_DGRAM,0);
% [8 \; C( P- T2 E3 [( A6 p        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
; B; z$ m, B9 s2 f5 a        addrSrv.sin_family=AF_INET;
! S8 a" U! Q. \0 i$ G  ?        addrSrv.sin_port=htons(6000);
: U( X( @7 A4 z& e! ^        while(1)
) t( \$ P0 W3 c( ^0 L        {# Q1 k& F$ k9 P) i* ^5 a
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));, {& k$ @; w5 ~# d$ V% N! |
                sleep(2);, n* n% V- V/ f) {) |" ~' G. @4 [' [
        }    5 Q: u4 a' Y* z
        close(sockClient);  ) K+ b4 [3 u8 `7 M
        return 0; 
5 N2 g5 z7 C7 p}
7 u' _2 ]. U' o1 r: g& i( I3 o
; S$ b6 P0 N9 k- g; e9 C" I+ O' \7 X6 b2 Z2 p
客户端:
  1. #include <stdio.h> + T0 s; {6 Z" p/ P
  2. #include <sys/types.h> , l' z  V6 U4 x  C! N% H% {! j
  3. #include <sys/socket.h> 
      Y' e5 s" K& m) u4 A, G) q
  4. #include <netinet/in.h> 
    / [. e7 e. A7 u" L# A% D
  5. #include <arpa/inet.h> 
    0 _8 M1 v8 L( F8 [1 P
  6. #include <string.h> , P1 U  S0 ?# h
  7. #include <unistd.h> 
    8 F0 x+ G* n% S7 U; f
  8. #include <fcntl.h> 
    9 B; @7 T$ D- n4 a  `
  9. #include <sys/time.h> 
    ( G* P+ H7 U$ O, t, Z5 h
  10. #include <sys/select.h> 
    ; L/ ]. v9 J  k# R
  11. #include <sys/ioctl.h>  0 i0 F. E; V. r  x1 h- S
  12. int main() {
    2 |, V. K7 L5 P" K' ]5 B
  13.         int sockSrv;% J) m% U+ Y) J" ?& W3 _; `. G  N
  14.         struct sockaddr_in addrSrv;7 f5 ], u7 V' _1 S1 a3 G! g5 k% r
  15.         int len;5 |" ]& r7 z! w. ^( f# N3 r; [5 y
  16.         char recvBuf[100];
    ' |1 @$ y' S; y4 c' `% m, u4 ~5 Z
  17.         scanf("%s",recvBuf);5 o  @9 x: U. ~7 s
  18.         struct sockaddr_in addrClient;
    ; G0 X& e7 M' e5 Q: h
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);2 q% v! b, i) h8 w! \. E. x
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    : e# v; A. C3 k
  21.         addrSrv.sin_family = AF_INET;3 M1 Y$ p1 c) |. ]: ~
  22.         addrSrv.sin_port = htons(6000);
    8 N- M: C) V. |- i: ~6 I3 M
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));9 ^" f/ p8 j7 g7 y
  24.         len = sizeof(struct sockaddr);
    $ W( R+ J# C, @
  25.         memset(recvBuf, 0, 100);  a# R" V1 I- n+ x  {) S( w% o
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    . X3 g& R1 E; _& `
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));7 F- V: g, l5 S* y1 [! n0 T
  28.         printf("Client data is:%s\n",recvBuf);
    / j% m" w* v+ E, O4 {* U
  29.         close(sockSrv);6 S' t! ]3 z7 Q
  30.         return 0;! U+ q* s8 b3 M2 D1 p+ {/ Q$ K% y
  31. } 
复制代码

+ b- \  K9 m* N' S/ ]2 h: y( s% o& h! G

8 y5 E. m) Y: ]3 i8 c/ Z# E' T
* C4 w4 T  E4 f( p% r- P8 U$ o, _
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 18:08 , Processed in 0.055218 second(s), 19 queries .

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