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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
客户端代码如下:
/ J$ i7 e  T4 `3 i
  1. #include6 N% R$ r* F* R0 H
  2. #include
    : ?9 W' C% r6 U5 {+ ^  ?
  3. #include
    . p; v3 }, R1 E
  4. #include9 Z+ y6 A) @; h! i+ M
  5. #include3 \) g0 r5 S# o) u
  6. #include# P/ s. @& M5 G
  7. #include
    ' K  a4 U: K" U  S+ n2 b# F- q
  8. #include
复制代码
$ K; ]5 _9 s4 |2 y5 \0 b7 d$ E

& h% l- W$ Z7 ?" x6 f0 \" s" F服务器代码如下:
, P9 E4 n, F! O6 a- L
  1. #include9 _, F2 s7 k0 q  s# Z+ ]3 Z; N
  2. #include
    * k& O  B6 K3 h7 `  q1 F. _6 X$ O! G$ {
  3. #include
    * S7 D# s: o9 V. y8 M& v
  4. #include+ z& ], Q% r! |9 O; ]2 D; T: C) ?
  5. #include
    ( n0 {# I% @% _9 {, W: m
  6. #include
    8 ^; B. S1 }9 v  S+ k3 y
  7. #include
    + J- q- E8 r) `/ g
  8. #include
复制代码

1 U2 _% F" a. K1 H' O& e
7 e) Y% H, h" ?0 D' ~4 H
) b) ^. O: T3 }/ h7 {, U

$ K* c# o3 D$ q0 i& h0 Z8 \; c" a% N( V( q9 C$ }* Z5 E
# ^) O8 h; u& K* k% W. `. [

' R0 ]& |1 i, {) B- n

4 [0 D. t3 O  f! u
5 p* E2 H" f) _6 {
: l4 o9 ^( D% t# b

4 O3 V8 z5 G& P8 ~1 I- v
( n. t, X* F# \! Q6 |
7 ]2 j, F. a( X; r1 m2 e, l# v

  w( q. _1 R" n/ F7 Q. K  e8 Z' G; m2 |, ]

% i0 e: n3 _! q0 q% R/ I
, V. [+ k$ z+ O9 g0 b

+ V  K, B# C( n4 i) I8 k
& Z$ D  W: g4 t

( `+ h  V% z' g+ f4 `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:+ x6 {, n: o0 r+ q
#include <sys/types.h> 
% @& B" A- Z6 M+ \3 [- _#include <sys/socket.h> 9 I, g5 U% O7 m3 _! d* f
#include <unistd.h> * w3 k7 V4 P2 Z! I
#include <netinet/in.h> 2 t. H3 ~- J$ z& a$ b1 D
#include <arpa/inet.h> $ e8 j! q4 f/ r" x
#include <string.h> 2 F: L" D5 L. u
#include <stdio.h>  / p9 r  X8 U- o, f1 W; @4 j
int main() {
9 P* N* S# G; z        int sockClient;
) y& N9 R2 Z2 s- L2 F3 r        struct sockaddr_in addrSrv;  d' S" I- E* {/ s
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
# n: n7 H5 K; D        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");/ Q% Z, t. [4 e
        addrSrv.sin_family=AF_INET;
( [% m, J0 k% h+ u. u        addrSrv.sin_port=htons(6000);( e: N  @4 L) e6 l
        while(1)
6 r0 [7 g( N3 u) p) J. m        {" [$ Y* T* X7 d* \
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
( H3 V# @' }# e0 v! L                sleep(2);
, x7 k# W* h% V  X. {        }    
+ F" k# o) A& ~  q+ ~3 h        close(sockClient);  & M) @$ H; r, I
        return 0; ; h& O4 J- f7 g( Q4 J, e" E
}
; |+ f1 L  |9 \, \/ H; p. U" L, E7 d* V! V- M; l
/ ~& ^4 ]3 I: D/ E0 g
客户端:
  1. #include <stdio.h> - V& w' O7 G3 f
  2. #include <sys/types.h> ! Z; B4 C: F  y% `2 t
  3. #include <sys/socket.h> 2 l" x9 q- @  i' }
  4. #include <netinet/in.h> 
    & m- M5 Q: S9 S' ~% Y6 a6 X
  5. #include <arpa/inet.h> 
    7 ?3 c: a1 X# c- }3 R6 S
  6. #include <string.h> 
    , N+ y9 y2 L' Z- I2 |# Y- _8 J
  7. #include <unistd.h> 
    % p  u5 X6 y8 [7 W; T( C
  8. #include <fcntl.h> 
    5 ^! m; ]# q! v1 O0 H, ^9 C- c8 |
  9. #include <sys/time.h> & x, h: b# ^# k. z9 M
  10. #include <sys/select.h> ( q/ i( A; D) n
  11. #include <sys/ioctl.h>  0 w" T0 S# e4 M6 D/ c* m5 z
  12. int main() {+ c, u' c8 _; E$ Q
  13.         int sockSrv;
    ) q& e5 l) I" e' S6 Y1 X1 {2 ]# v
  14.         struct sockaddr_in addrSrv;
    9 m# B" x- a6 S2 N  \  T0 {
  15.         int len;
    3 [4 l, u- y" C5 P0 }' q  p
  16.         char recvBuf[100];' B' M1 P# D7 y  U/ V
  17.         scanf("%s",recvBuf);
    ! f5 K' i9 r) z) u; Q7 W$ _
  18.         struct sockaddr_in addrClient;& E2 z! v0 Z( n/ Q8 d& }
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    2 R$ \7 V( k. K
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);6 h" K! k3 n7 ?, t/ |) X
  21.         addrSrv.sin_family = AF_INET;* r3 e5 a6 Z) |1 @! a
  22.         addrSrv.sin_port = htons(6000);- d9 K0 L: t$ I# P, Z4 \) H
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    ! Q8 z9 A6 U0 Z7 o6 e
  24.         len = sizeof(struct sockaddr);
    - i9 M! n. a2 @: ]* Y$ g
  25.         memset(recvBuf, 0, 100);- x" ]$ c: v4 X$ V8 t: x- T
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    " F! o1 ]! G) E( ^& k
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));& o0 _9 R2 @$ l2 A0 {$ j  T! N
  28.         printf("Client data is:%s\n",recvBuf);
    . T+ }+ G4 m  `( n2 L, D: \7 Z; Z+ N
  29.         close(sockSrv);
    4 l- w" M7 g  K- e4 p
  30.         return 0;6 g/ d% e6 \6 _7 w5 L: E
  31. } 
复制代码

/ N( g; c3 x! T: j3 L" p$ P
0 S& S5 O4 f* J; {& T% y" _+ Y8 \0 l) E! Y/ \% f$ [$ a

, F  P6 P% a! r
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-22 04:11 , Processed in 0.054732 second(s), 19 queries .

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