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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:& O0 X( ?( |8 X: J
  1. #include4 _8 c+ a$ V9 r9 n3 B6 _/ g
  2. #include
    % M; s0 j% `- O. a5 A" B) }& l
  3. #include) f' ?/ x( |' l, L0 F
  4. #include
    5 E  L. j# w6 D4 g9 f( T% M
  5. #include1 m5 \% J# l2 k( F
  6. #include
    4 ?! J2 I; J8 n, q: F6 K
  7. #include
    3 N8 L. A' s6 j" T! S* `
  8. #include
复制代码

( s  d$ x' X9 L, l
2 _& u0 Q0 s/ w服务器代码如下:! ]  {' V) c# J
  1. #include9 L2 c8 k$ ?, `0 c
  2. #include
    3 g7 r8 n+ ~6 ~, T
  3. #include7 s, M8 Y" |6 p7 n0 z- G
  4. #include
    ) W. l: m5 ^" g8 t8 d# g
  5. #include
    1 ?$ ?  x5 I$ h
  6. #include; b' ?, d) b- y
  7. #include$ g! e% H$ s6 ~" t
  8. #include
复制代码
# O2 f/ E  @5 X4 \$ [( F

0 e+ [$ I! q9 D$ w/ f; g: ~0 D# V! R2 z. }# z4 [1 F5 D

1 G/ f" q  d9 V
& F  m% V, d; Q
% s: ^7 [, V& Q# i  O8 K
( k0 s$ }& `9 Y. ]
$ H; X: u6 l$ E
! d- z2 g( v5 I& m/ F
! @* v4 @- r7 C+ Q4 \
  p  v, A% g$ T( O4 v$ C! K4 u  C) z

! {' Q* e7 p) B5 j  y7 Z* U1 e* K0 ?

6 x$ c9 ?, t0 r# w. A( A3 v. b) V3 y" g5 |% s& q2 \
* @, e2 W  U4 a3 h: `; E# [
( R( x3 Z" G) Z1 T

0 N. L! w  x' y2 x
- S+ B! B# l9 e# }$ N. `+ G
% c- J: c9 e, [, ^, X  y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:( r4 b1 o) ~! F7 D. S
#include <sys/types.h> - C! ]% N3 Y1 Z' q
#include <sys/socket.h> 
9 }8 o' B8 v( B2 k: \# v#include <unistd.h> 7 R, |$ p$ u, Z& f2 C  \" m! u
#include <netinet/in.h> 7 Y2 C" Y) Q# @0 M
#include <arpa/inet.h> , D. Y( M) s6 W( t# W6 T7 v
#include <string.h> 
) I: `# o, H, R5 G#include <stdio.h>  6 T6 R! Y: e% B3 n. Q
int main() {
- `1 |- f8 q( ^% U+ V8 t        int sockClient;' m) e; \3 @4 z- Q% m+ R
        struct sockaddr_in addrSrv;! m, g/ d- M6 [8 ~; Y9 [6 o  d
        sockClient = socket(AF_INET,SOCK_DGRAM,0);, |; i0 `- x0 s0 x+ Q  o5 O
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");: g5 W5 l- i9 s" R; l3 I% C
        addrSrv.sin_family=AF_INET;
+ U7 T2 [, A$ E1 L        addrSrv.sin_port=htons(6000);
/ i, c$ }7 L% k7 n# N0 b- H4 r        while(1)
* J) L. C) }/ d( p2 z5 L0 ~        {+ _; O2 k; T2 U# {1 T9 e
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
( t2 y1 d' z+ w! z  G                sleep(2);( L) }0 K% z6 m- T- j
        }    ) Q1 N6 ^& z& R' F
        close(sockClient);  
; y% C) U% W9 ?& e: F; O        return 0; 0 M, M7 V( {$ D5 T  F7 Z
}
4 m) U) k# c7 Y- e* ~7 d4 K% @( P5 @

$ B1 W; ]5 G6 |9 T  [# l客户端:
  1. #include <stdio.h> 
    ( n: r7 D9 b9 ^2 W$ l
  2. #include <sys/types.h> ( A* O) J- y' j; l1 s
  3. #include <sys/socket.h> 6 d0 ~1 I: B, r9 @: t! F
  4. #include <netinet/in.h> % R5 {8 j3 K/ o8 @6 \3 J' c
  5. #include <arpa/inet.h> 1 ^  @0 A2 l; c: t$ Y0 ^) U: [
  6. #include <string.h> ! W* q, F- a  O" r1 {
  7. #include <unistd.h> 
    : H/ Y; e" g+ y7 ], w
  8. #include <fcntl.h> 
    & O! ~" ?% d) A8 o, L* j
  9. #include <sys/time.h> 9 H. C, U# `. `+ N: l2 o( A8 h( z5 ~
  10. #include <sys/select.h> . Q0 e9 f: I' n0 g
  11. #include <sys/ioctl.h>  ; s7 ~9 ?; }; P2 u5 c, a
  12. int main() {3 U+ a: p9 Q. S" P1 J
  13.         int sockSrv;
    # V# R- \4 ]1 f6 D$ v$ R9 x2 ~
  14.         struct sockaddr_in addrSrv;# C+ I! Y6 @4 K4 S# \
  15.         int len;
      l1 C% p4 I* |8 {5 U/ B
  16.         char recvBuf[100];
    2 t/ Z" e0 r) o/ |/ |+ C+ C
  17.         scanf("%s",recvBuf);3 i7 k4 ~) r# A- `
  18.         struct sockaddr_in addrClient;( E6 i; v, B7 h6 o: A$ l
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);) a' K- R% W! `/ D" B9 F
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    6 z3 ^6 y. e2 c( @8 g  H1 r
  21.         addrSrv.sin_family = AF_INET;5 k5 W0 j6 r; _" d2 k
  22.         addrSrv.sin_port = htons(6000);
    ! ~& R7 q0 z' ~. s
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));  x' m- E6 P8 H' q
  24.         len = sizeof(struct sockaddr);. C- |/ N1 A; Q  l
  25.         memset(recvBuf, 0, 100);
    / N6 ~# _3 a  l- @
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
      R! J5 L/ M& g1 v! O& p0 Z
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));2 A6 ?9 a+ d9 W
  28.         printf("Client data is:%s\n",recvBuf);
    1 B! f( o* u( ^
  29.         close(sockSrv);
    / S# R- H; k4 I3 B4 L
  30.         return 0;
    7 T) W" |2 [8 ?  R
  31. } 
复制代码

, K- ^  [( d& ~; |( p! d
5 e6 w& A2 b7 E8 A9 Z# D- [8 s8 a5 T4 V
" `( D/ s1 D: B1 ?  @
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 14:35 , Processed in 0.053784 second(s), 21 queries .

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