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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:/ g3 C" B4 N0 `' S# T; q* Z
  1. #include, d; X8 d2 c6 x) P0 B% k
  2. #include
    * T) b. Z: e5 [0 ?4 S2 [
  3. #include' |; z* c9 G& \/ L
  4. #include
    3 W: t1 Z3 J( ]8 H4 V8 b
  5. #include& H) h/ E/ [$ J/ m  I5 [
  6. #include% y1 q9 k. R7 C
  7. #include: P) g, O5 C1 u9 h
  8. #include
复制代码
, ]& i0 o* A7 {; [/ A0 b' T
5 T# H# B, h0 f) _
服务器代码如下:
; b' X$ z1 p: g" c2 D
  1. #include
    ' J  W4 |: o: q" x( o
  2. #include1 e! C8 \) _0 j( F$ Y( |& S! w" J! E
  3. #include
    ( q, B6 U6 X/ k: Z) z8 p0 f
  4. #include
    # j# v) F, y) @( U' l2 S. j. r3 h/ }
  5. #include/ X$ M0 v3 M) n7 Y! A6 l. C& M
  6. #include
    ! ]3 {& t1 M" J2 J3 y! j
  7. #include9 F8 ]  y5 G4 ?  w* s# q  r" T; H0 U) }
  8. #include
复制代码
" \, Y1 r' I2 j& S+ q
: p8 C+ F% j9 `3 d

$ `$ s# B1 D4 N, f9 `
2 ?( O: A2 S! g* ]6 W

4 W2 g1 Z& ^& U( j% M$ B9 f

9 d' X' s; S( U) y# [( d7 F. ?7 {, y. y. }5 K$ x, U# @& X

$ h! R8 U8 W* d! A6 f/ |
0 [* K0 s1 F9 n
+ T8 C! ^( e$ y8 y2 D
, l7 i- M/ g5 `/ _2 y" B6 _
3 F0 d6 F; T  s, \5 X

- D7 N& s' r, R) O% d
* M, w6 @3 T0 U. r- ~
' k# W& O$ l' W3 v" m
, ?' I8 Q& `8 i" t$ v3 t
% a2 ^2 c  i* n# N$ e' \
+ k& j' u$ d+ }0 {& h
/ F# W* M0 }2 k  G1 E; `* j3 |
! T& ?) O4 i, O$ q/ }! w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
7 Y7 Q8 K2 l/ U( [2 {& z$ m8 _! D#include <sys/types.h> ' Q/ H3 r4 X3 |
#include <sys/socket.h> 
3 s; F1 u; ?" R5 i/ w#include <unistd.h> / N3 H. k0 _7 R+ p: @3 n1 @8 m' Y
#include <netinet/in.h> / V3 l4 E6 o9 f$ g3 w* |" o4 r( N
#include <arpa/inet.h> ' Y* i: r% F- S* C
#include <string.h> 
+ V9 s, e7 ~& F- \/ Q#include <stdio.h>  
9 Z4 u* Q+ o; X/ M4 _int main() {* s- j3 e  n9 L' `2 E# _5 {
        int sockClient;
8 P  S4 g* X* C3 y2 T        struct sockaddr_in addrSrv;( ]# ~, ^# G, [( I
        sockClient = socket(AF_INET,SOCK_DGRAM,0);/ d4 w  p# H1 ^$ q
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");6 u; I+ r+ [0 a5 f5 x
        addrSrv.sin_family=AF_INET;8 s% q3 D# |# C, t# T' G  |- W
        addrSrv.sin_port=htons(6000);( H9 a5 t% ]: p" y* [! ?& W
        while(1)  M6 H( M9 w7 c! y9 \  {. |
        {3 [: Z& o4 v& {8 \
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
( J( t  t% [' ]: e                sleep(2);
+ l1 B3 g) o1 F9 i3 E7 @) \1 n        }    ) g, a; |& E' g! |" a
        close(sockClient);  6 D5 y. F. l, ?4 n
        return 0; 
4 j$ g0 P# {* ^, e6 u4 f}% @5 r; I$ D. B( Y
( I" B  V: m/ j& k) D

) J7 E0 d4 ~/ G  q/ f客户端:
  1. #include <stdio.h> ( J% @: d7 N' p8 y' V3 z% Y
  2. #include <sys/types.h> 4 ]3 J* j! v9 G3 K: T7 ~
  3. #include <sys/socket.h> " M; Y1 \+ b' a' w: C9 G
  4. #include <netinet/in.h> . c- o  N: ^. h: v$ m
  5. #include <arpa/inet.h> 1 i) S3 Q0 [5 c! C
  6. #include <string.h> % y* a( Q5 B/ Y& }3 d5 w$ {& x% z
  7. #include <unistd.h> ) |$ {' t* Q* ^- M2 q4 G8 k2 J
  8. #include <fcntl.h> 
    8 d0 f' t( F1 }; a# `
  9. #include <sys/time.h> 
    . H/ E' Y# M, h: C; _/ K& _! y
  10. #include <sys/select.h> $ k4 P, f" t. ]; X
  11. #include <sys/ioctl.h>  6 d7 ^, |% M1 Z5 F
  12. int main() {
    + F1 [& O' b0 ]% p2 F
  13.         int sockSrv;
    / H" |3 }8 N' J+ D$ |
  14.         struct sockaddr_in addrSrv;' L( H) A3 x* m( I% q1 N0 j7 X
  15.         int len;
    9 V+ \( x0 O6 [% a! O+ O2 O5 \& V; S
  16.         char recvBuf[100];
    # l* M) R# C. l7 `9 Y0 M2 n
  17.         scanf("%s",recvBuf);# C' W8 k4 p7 D5 N
  18.         struct sockaddr_in addrClient;1 j3 a9 r' q# ^/ |
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);' i; R7 u% Z# F, t) L& y9 T
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    ( p' r0 L/ s# D' h5 C; y
  21.         addrSrv.sin_family = AF_INET;; @/ a8 r& n5 Q3 w
  22.         addrSrv.sin_port = htons(6000);
    5 k! J6 D# X6 [4 }1 `; ^# w0 Z# j4 t
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    " }3 E5 M$ G! o# a8 }  ]1 F8 F
  24.         len = sizeof(struct sockaddr);3 B* f1 }# X. V. g6 m9 n9 x5 @7 p
  25.         memset(recvBuf, 0, 100);: O! L* u; @/ r5 F
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    7 e, f- O" L$ R8 c+ {4 @
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));1 X! u0 J4 M+ D- j$ L
  28.         printf("Client data is:%s\n",recvBuf);
    ! H1 Z3 z% {' U3 K' V: [' Z9 A
  29.         close(sockSrv);) T7 q8 @6 E% _
  30.         return 0;
    ( A; }* B$ B- |( C
  31. } 
复制代码

: H5 Q: S* A* x3 ~+ L% `' w9 U
0 `3 \7 }: Y0 H1 H5 r: C; l+ e( G4 s% p7 A0 u2 [) C
9 v4 i/ e: I) k, J# g
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 16:09 , Processed in 0.069539 second(s), 19 queries .

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