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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
! |) o" X( N, ]* s
  1. #include+ ?8 ^. i4 x# `6 ^
  2. #include
    ! d1 N; l7 v4 G$ K
  3. #include
    0 ]$ c( H+ @5 H; @) `' o
  4. #include6 g4 c. {; |5 R& ?' i) V
  5. #include
    / q2 b( I1 s9 J! @
  6. #include) K* V- r# H; R0 Y0 \& {
  7. #include! I' O* g7 X* j
  8. #include
复制代码

/ n6 k  E" {' U' T4 ~. {# |
8 i# l5 q" i$ u$ j4 w& o服务器代码如下:
/ o  ?6 g( p2 `
  1. #include
    0 k  N" ]( a+ J
  2. #include
    6 a/ E) t, g, E+ l; M6 B
  3. #include. ^4 Z  G5 h' r& s' ^5 X7 L" X1 A
  4. #include: g& [& V' |: _. \; J
  5. #include2 C0 K1 u7 L" D; ^9 a/ U
  6. #include
    + p1 B. n7 V. L0 K! k$ a' q
  7. #include
    : j( h+ x# H8 k7 q. D6 f& K
  8. #include
复制代码
5 C6 }+ i5 E1 p

. y5 Y1 {0 G7 f! ]! q5 d7 n4 g3 ]9 J4 B$ A6 z

4 i! R! E# M& s; D
) F5 @& T: h; ?: g

; d* C, t$ M" j+ k6 A+ s0 ?3 R+ s( `9 X) D7 y# D/ G: V9 y

% Y& @7 c0 }8 [6 G9 j
5 w# \! I" K* G0 q3 E
) V# ^) Y$ ^: b! }) W

$ C& f/ F$ z( E3 l" b4 G, D- g

  B/ k  Z2 |! o! D& E2 V# q% A. b! `' k& v! y% R6 |, H" Y
; g3 d* ]4 w9 f

7 @5 i* P# T& K4 e* `
& X7 F" M- l2 \4 q3 }

2 p3 w  ?; X& C5 s9 l3 g

: t$ j, t: T& B7 o: s# ^0 c  \" q3 S+ r8 f; q* A$ _% C
4 Y8 Z3 J5 |) J+ P5 t. }1 ^! l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
3 F+ V/ C, L; `7 _1 [#include <sys/types.h> 
1 i1 l: \4 N- K, O# F#include <sys/socket.h> ! G: H8 N& F3 B! ~/ h9 @
#include <unistd.h> 
( \) i. R, a+ ^! N& C- h#include <netinet/in.h> 
% F  @8 ]$ l3 |+ \( n#include <arpa/inet.h> 5 t- }' _; Q1 j
#include <string.h> 
* a9 J4 k/ u9 \. t# A. N1 H( z#include <stdio.h>  
* t! k, e4 l: z! y. e: Wint main() {" A9 P* |* L' Y- J1 u7 K
        int sockClient;
8 ]! ^' ?  e. b6 |* O' u        struct sockaddr_in addrSrv;; t: v3 U  `) M( g
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
- i; l5 @/ v( b( E( W+ v        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");: n) t3 Q9 ~8 t% ^+ s
        addrSrv.sin_family=AF_INET;2 f9 ^+ v8 Y3 V9 v
        addrSrv.sin_port=htons(6000);: z# ]) }7 V  c0 b
        while(1)( W& X+ i9 C4 g+ Z8 ]
        {/ C. Z' w" f9 [% O2 h; c
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));  ^! N$ |. k8 t8 U; n
                sleep(2);2 D1 A9 Q2 a* v% g1 |2 f% w
        }    
- ]# c8 f; N3 K; }4 c8 t* {' T& E        close(sockClient);  
4 S9 k$ t! |5 c% \! H+ D$ v        return 0; 
! k! H$ t% r. ?  |2 @}/ B7 k, I6 l5 s4 W
2 _$ a# K. ?4 u+ E

0 o! |0 e$ u: Z& d% I客户端:
  1. #include <stdio.h> 
    $ u& k& B! s' c; K
  2. #include <sys/types.h> / y' _% x7 F7 h3 p% k; w
  3. #include <sys/socket.h> 
    ! |9 s0 P3 L6 S8 c
  4. #include <netinet/in.h> $ _. C; B+ l7 I0 N3 ]- q) y
  5. #include <arpa/inet.h> / r/ O9 }& [- G& Z# H
  6. #include <string.h> 
    " m5 k( s0 K  b  @
  7. #include <unistd.h> 
    3 c9 E# M* E) \6 c7 W( b9 \
  8. #include <fcntl.h> & M2 V% g3 g: c% F
  9. #include <sys/time.h> 
    0 ~" I; Y9 W0 z! g
  10. #include <sys/select.h> , j2 b# B# @1 d; K5 `' M* t2 C/ @
  11. #include <sys/ioctl.h>  . ^  Z6 ]7 j' m4 A3 f
  12. int main() {
    % o9 O' a, N0 q- e
  13.         int sockSrv;3 ]! N8 N* m+ Z4 @
  14.         struct sockaddr_in addrSrv;# |7 |$ }3 O: @1 d) W7 f
  15.         int len;
    ! q( w& q$ ], D, v8 t) r
  16.         char recvBuf[100];
    0 X5 V2 O2 R2 u4 D3 u2 y7 s
  17.         scanf("%s",recvBuf);
    ; H% Z- b8 j; C/ ~/ h
  18.         struct sockaddr_in addrClient;
    8 z7 l, C  V- r" q/ @
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);# R* V$ L) }' }& \- z$ o: ?
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    1 U" V/ w- L0 @& i3 z2 |
  21.         addrSrv.sin_family = AF_INET;5 ?# M; B7 y- K% ?* Q: Q0 d) t( z. r9 s
  22.         addrSrv.sin_port = htons(6000);
    - Q- W5 G  }; i  f7 W
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    3 h2 z  g9 x! |( N
  24.         len = sizeof(struct sockaddr);9 v  S1 n3 f  p0 @' M! u% A
  25.         memset(recvBuf, 0, 100);
    # X; g: u: D6 A" P
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    6 P$ ^4 w- a  v: f2 e- e/ S6 O7 V
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));9 z7 _) p2 i$ b0 ]5 N$ f
  28.         printf("Client data is:%s\n",recvBuf);
    3 q; `; C$ I* Y& _
  29.         close(sockSrv);
    - h2 }- `3 X. G) L! M
  30.         return 0;* s; N3 _7 |0 H) l4 q
  31. } 
复制代码
$ y* v1 x5 c7 a0 u

% R7 p# y+ M+ F' E, U( h" F9 |$ d+ j; I( j# ]

, R. O4 L0 o# r" x- Y$ i, z0 @+ j5 N" \
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-4 12:22 , Processed in 0.059040 second(s), 18 queries .

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