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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:9 {3 ^, ]1 X+ m# P3 S! C$ z
  1. #include
    8 g) V" j, u. `( @
  2. #include
    0 l# O. M! k, c$ Q  ?6 T( @
  3. #include
    3 }3 J; v! ?' D) ?% f
  4. #include& r& ]" a" s: w7 [$ q4 w: J
  5. #include8 E. _! g# r! C3 ?
  6. #include
    0 d. t2 O  q  N
  7. #include6 d* V: F7 F) B
  8. #include
复制代码

  J" [* q6 U7 Q3 I+ d& d/ `6 M2 d/ E1 _+ V
服务器代码如下:
# Q( h( s, }- i
  1. #include
    2 }' x" v0 R) S$ ]8 v* f
  2. #include) A  x# l9 `6 P% B3 k
  3. #include
    ' @+ m6 f  E- l2 F7 }2 w
  4. #include
    1 r$ d  q# S4 P; L* X. O
  5. #include
    8 [$ t8 U( D! m) n
  6. #include
    0 f8 R' K' a# u& A- {- u  Z) @
  7. #include
    6 }* j* f$ B5 S4 @% B
  8. #include
复制代码

9 f% K. U) W" z1 U9 [$ `  Q2 g& y- a6 |( K! U* t

( y& F7 N5 y: h$ N. o
# i- b1 [% G. N! U& n* o) g! [; q
% W6 P  b3 K; r: T$ X  W5 U

- A1 d% g9 j! q0 O% c' \1 G/ D
- x5 m2 `3 }( G8 }9 G

6 q" r- _6 t9 i" O5 Y
. I3 T/ e9 O* u! [- `0 G' k, x# x. g
2 w. n/ N9 Z4 |* c
9 q, o  K( g2 P( V4 Y* Z! y/ i. H
  f' e2 e& i5 O" G! U9 x) d* Y
' G$ B+ m6 |: `
; x* N! \. r7 }% x* \$ O; v

9 _  t" z& }$ y% W, H, g! C! q# W( E
# A+ v# a1 @4 I, X( D

! k; E/ G3 P; z! [- E, m& d

$ X: |" K6 z% R6 k" l: ~
9 Q( l: k' I$ r( H2 @( J
$ v1 m9 j8 ^3 m9 U  P# _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
; Z, Z1 _" |4 ^9 u: E8 P3 f#include <sys/types.h> 
: }" Z7 X. T5 q( r2 x  N- K#include <sys/socket.h> 
4 H* e- B" x1 U8 |7 M" l: a#include <unistd.h> ; {# @  k$ }! q8 i1 F! ]
#include <netinet/in.h> 6 h9 s  |& d2 ~: R
#include <arpa/inet.h> 
: }  `+ e+ x1 l* `1 l/ q#include <string.h> + i& e" x  j! X* X
#include <stdio.h>  : ?4 W; @+ ?( P1 E
int main() {2 `  F! D& F* C! F( P% ^3 d  b
        int sockClient;% C8 c$ t* K' S1 w
        struct sockaddr_in addrSrv;# Z* R0 }& d$ W, W) c) W7 |) C1 O
        sockClient = socket(AF_INET,SOCK_DGRAM,0);  d6 |/ G- Z# ~2 f4 G
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
5 T$ o% }4 i$ F2 _5 m        addrSrv.sin_family=AF_INET;  s$ Q' a3 G% N5 N6 O: ?5 A) V3 G
        addrSrv.sin_port=htons(6000);
7 W* K8 P( q: O" }        while(1)
( h5 o9 P. b' j8 h+ e. _# V        {
: b) h* P4 x1 q8 w                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
8 q* n8 _; T- t                sleep(2);
/ b+ i5 Y% @- x# f$ Z; U3 c        }    
2 P  e6 V( l: x0 j        close(sockClient);  : G, Z0 M, _4 I9 T1 M( a; @7 l# ?
        return 0; 
0 A1 X- t4 K$ y5 N}
, D, P% A. t: R+ s0 G& `1 @7 b( ~* E2 s: M1 D
9 t; M: }' D0 o
客户端:
  1. #include <stdio.h> 5 N2 M3 w! y5 H; H
  2. #include <sys/types.h> 
      N5 {: E. [2 D  s$ h& v2 N
  3. #include <sys/socket.h> # O2 F4 u& v2 R+ `7 w6 L
  4. #include <netinet/in.h> ; x" H' y9 g# n, g
  5. #include <arpa/inet.h> 
    3 Q+ V- q  U( z6 G/ a) R
  6. #include <string.h> 
    . P3 x* l" r8 t, {1 N
  7. #include <unistd.h> 0 |( a6 n) u- b- b6 |
  8. #include <fcntl.h> 7 _3 h- P6 m! C6 T
  9. #include <sys/time.h> + W" J5 r8 P$ `, |! l
  10. #include <sys/select.h> 3 \) h" F) a* Y# s6 |% v( G, y
  11. #include <sys/ioctl.h>  
      u- J" Z: c3 @( u* n) L
  12. int main() {
    5 e- \: ^$ V% W8 n
  13.         int sockSrv;
    * {$ S& ~$ w( R7 c
  14.         struct sockaddr_in addrSrv;
    0 t$ I9 A& ]. p2 R  g
  15.         int len;
      C, R# C) w' B- j5 o! L+ ]
  16.         char recvBuf[100];
    : Q. B, \+ C5 _: T5 N
  17.         scanf("%s",recvBuf);7 z3 r3 A3 }3 c: E' g, J
  18.         struct sockaddr_in addrClient;8 K3 |+ F* |! T, i. A
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    & r4 c& ~/ Z+ @9 V' W5 U
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);" w1 y9 c# o8 H; g6 D  |& H* m
  21.         addrSrv.sin_family = AF_INET;
    ; D" B3 V, _3 b- G, l% s# d$ z
  22.         addrSrv.sin_port = htons(6000);
    7 u: J& @! _, p2 O/ ^; J( v
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    3 Q  M! `/ U  W0 }# [& f
  24.         len = sizeof(struct sockaddr);4 \8 Q% k- f7 K
  25.         memset(recvBuf, 0, 100);7 B1 C8 T& l% C! T
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    0 N$ n, {/ K/ g; \3 j4 N; O+ a
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    : G, S& `: b+ |
  28.         printf("Client data is:%s\n",recvBuf);1 p! T- [+ }$ P7 C7 p: K
  29.         close(sockSrv);9 D3 P4 P! U5 U8 f3 [
  30.         return 0;( |" K5 S, t* Z( s
  31. } 
复制代码

  u* K4 o  K4 L* ?9 D" g! F
1 ~  R. m4 k8 {) f5 x1 j( x. G$ z) E

. y9 d3 I0 J# s( P& z/ o
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 15:07 , Processed in 0.110052 second(s), 19 queries .

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