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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
) ^6 F* T+ Q& |& ]! i
  1. #include' E% g  C  `# U0 j+ O
  2. #include
    , \3 \, O1 ^3 D7 G7 T( D( p
  3. #include, U$ a; k: s& n  x  i
  4. #include5 S7 }4 w9 B( m! Z# V
  5. #include6 B/ u% E* p# @2 v0 D; p
  6. #include
    8 R2 S; F6 M& b' E( \
  7. #include; d3 F2 T  S1 D0 ?
  8. #include
复制代码

0 ~6 d8 `$ |& F5 U
$ q; Y6 N: {% V) b  I1 E' _% o4 Q服务器代码如下:. P+ _* z( |! Z. s
  1. #include
    & p- L" q2 g% B6 f4 {. m0 @  ]
  2. #include& |% M7 ?" `0 R' B6 h
  3. #include
    % r5 w3 @! t3 B1 p9 Q
  4. #include
    : U6 c! X- p7 u7 f! o" Z# c; c, R
  5. #include
    . r) Y7 O2 F  T$ e0 t! f: b9 ~
  6. #include' K. s. ~* @& K
  7. #include
    4 k3 C3 {4 X: P$ S
  8. #include
复制代码
1 T8 r( q; a' r' H# ?7 A

6 e% e& ?* G0 q/ s, g: O  A
3 b9 N2 w3 O, L5 B

7 f( c: K3 h7 _' x8 L+ ]6 L
- t& v1 M1 C; H" J' C9 w
% q9 M& R7 x3 y8 Z- J

: V7 y& |: S: ^& g

" ~# z; J; O8 X  [, r7 f8 P. z" u, P! t
" ?5 X- a4 Y& P( {  F8 l% W' f
4 f% p$ }2 Y) [! L$ Q  K, O" S/ Q
- W# x* y% e  [( b1 U6 K6 ]$ X
* t8 e  W- V( L5 {

- [5 ]/ ]4 J+ v  c$ Y) A1 {8 G; F; a* e0 m# q& ~8 b- _" Z% e' j8 w

' R0 h* Z1 l% R( U7 k/ p  E
3 @+ C9 ~9 f. Q! y5 ^; w

1 t+ F. V2 b0 }$ j5 \( B! w: C: W# i
/ t8 F" s0 s  H! w2 R6 Q9 ?; B

& P8 ^# R3 h0 d& K3 y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
+ L8 G: [1 G: D( W! I* t! o# @#include <sys/types.h> 
& D- g, T/ g9 i+ X6 K+ W" c#include <sys/socket.h> : \9 g% J- `- U8 h
#include <unistd.h> 8 k  t" \/ {3 c: [9 L
#include <netinet/in.h> & x. B" ~, q( |. n& G/ j$ K" f
#include <arpa/inet.h> 
0 Q/ i7 G, k, f8 M#include <string.h> 
8 w$ J' V3 T# y#include <stdio.h>  + T3 q$ |% A9 I+ F; H! p2 a6 B
int main() {' a4 m) V/ x& k! f6 c. e
        int sockClient;$ a: L! U! y; k9 f
        struct sockaddr_in addrSrv;# S, O7 Y! G; O
        sockClient = socket(AF_INET,SOCK_DGRAM,0);, i, E9 @( ^/ B2 A8 H& y7 D' U
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");) i+ v. f8 T- _. a9 i6 X/ F/ s1 b
        addrSrv.sin_family=AF_INET;, }& }! C! c0 p% ]1 v
        addrSrv.sin_port=htons(6000);- X3 ]6 p( }: a3 ~+ Y) t: A% V
        while(1)
' x5 N$ k& T' l8 p        {& E; p  W5 V% r+ ^
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
: E1 V% p. ]$ ?" O' g0 K6 A                sleep(2);
* F( Y7 H) W/ P  Y4 v9 D( H- y        }    
# F/ L9 x/ q8 r5 x2 F        close(sockClient);  
$ k  M" ?' k; n. N        return 0; 
4 e1 \, h5 D; \# b}
; ~; ^+ }' T$ G
, r$ Z, K1 j7 J, ?$ L- w2 d9 l( p) k  T6 N8 F: u/ m
客户端:
  1. #include <stdio.h> ; y9 z$ N. }6 {% a
  2. #include <sys/types.h> 
    # ]& W. a4 ^& I9 G: t. z/ r
  3. #include <sys/socket.h> 2 x, Z* K2 Y9 _8 f! Y
  4. #include <netinet/in.h> 
      C3 Y) I! s3 V& l( t; Q
  5. #include <arpa/inet.h> + @9 r* O* F# _: n$ [# t- L
  6. #include <string.h> 
    $ ?/ F& a. F6 t
  7. #include <unistd.h> 5 [2 v# D6 @; T- @9 k
  8. #include <fcntl.h> , X8 S: E8 k7 Y) x
  9. #include <sys/time.h> 7 E. z4 t9 |& w- a& q6 M
  10. #include <sys/select.h> 6 O5 I; c* T- e/ m/ l' o0 u
  11. #include <sys/ioctl.h>  # S1 Q( R9 V+ y# j0 ?
  12. int main() {
    6 J4 x0 i: p& M( ?( Q2 {  E" e; K
  13.         int sockSrv;
    : j. B# B6 B( d: U' |+ T# r
  14.         struct sockaddr_in addrSrv;9 \, j" _# `( ^; n  B  D6 ^- L- |2 k
  15.         int len;
    # h# u+ v7 Y7 o9 C8 c5 k- l
  16.         char recvBuf[100];
    6 O- x6 i% P' j: u( x2 G
  17.         scanf("%s",recvBuf);
      q9 v6 d( B' g
  18.         struct sockaddr_in addrClient;$ e. s- h  \5 E7 q4 I
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);% _' o' G8 }0 I* G6 y" P' T" E
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);1 W2 r5 ?8 Y- x1 J/ n
  21.         addrSrv.sin_family = AF_INET;1 E% ~9 M7 e" I% r" ?7 I
  22.         addrSrv.sin_port = htons(6000);: Z( k" |$ d9 ~; f
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    / d- L! h( D6 O4 `
  24.         len = sizeof(struct sockaddr);
    - i6 C  n6 \  v! w1 i
  25.         memset(recvBuf, 0, 100);
    $ w1 i: G/ `5 H5 Z4 }' h
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    6 K4 \: S* q1 B% L5 H' ]5 H
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    $ B- h3 X! J1 e
  28.         printf("Client data is:%s\n",recvBuf);6 T1 }9 ]4 }! z" k+ ?2 \0 i
  29.         close(sockSrv);. m: |' {6 N2 Z9 r5 `7 M$ {
  30.         return 0;
    ! v5 G' [9 G3 ]8 x- }! X
  31. } 
复制代码
; R4 ~/ u, a, M0 D* T) y/ {9 ^3 m0 e/ O

7 j9 r* y: b3 `/ W0 `$ M4 I. q
  h9 p6 h$ ?6 R+ s) h  O
$ O0 W% `: c4 _9 Y; F7 ?& _* ^6 W
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 18:06 , Processed in 0.070647 second(s), 18 queries .

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