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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:; i, e. j; @9 L# L
  1. #include! `+ n9 T: d* X7 J3 m9 h
  2. #include& N4 j6 d* z, S: F
  3. #include9 W; y$ O% T  k7 w1 c* m0 @
  4. #include, a  k. |+ x) `; F, d; B
  5. #include% o' J* J4 F3 k6 a' f2 B
  6. #include! ^# G; J! ]/ T+ R+ [8 n7 e! a. f
  7. #include+ B  [( a* v. g! F8 }$ j
  8. #include
复制代码
& f% f& x+ e, r- [
/ t, z( i" I  q/ i! X
服务器代码如下:
4 U8 W- _. D3 u3 \1 J2 J  P9 N
  1. #include2 c  j6 ?* K# l* W8 k0 @2 r, R2 G# \- h
  2. #include
      y" z$ ?. M! Q
  3. #include$ E4 j0 V" M- M
  4. #include
    # A# j1 T4 @  s% M% `! k
  5. #include+ Z+ s  D. }  n  U2 |! h
  6. #include
    % m- @% |4 |3 U( }1 y6 y
  7. #include1 s" h8 O" Q' }* ~+ ~$ `1 t
  8. #include
复制代码
4 N, x- e+ D* y( K
6 ^& R; ?6 [* ]# f9 D7 w0 s

1 H; |( ?0 s4 z8 g- b1 S
0 K8 M) d3 t( R$ i/ e3 t
' G+ p( E# v$ Z  w$ }6 i/ e

4 W* d, q8 ?- g+ R$ _8 K6 f2 e( B& }) l! M* D# Q. i" c, N5 y7 i
3 F  Q/ c0 U; p' D( H. t
0 @/ I# f0 d2 b6 ?; ~0 H. p/ r

* Y+ u/ a1 y- x4 h! v5 i0 z: K1 _) B6 A$ n3 l

( [# R, G; U# \' @! L8 X
/ w% C. r$ z0 f0 \
# X0 j9 A0 \, c/ M, F" n; @& H
+ p4 g( t" z! v9 V; @

- M4 X6 P/ K0 z8 E% m$ M4 |+ Q) f$ a8 }4 R- n* R

- Q7 I1 H0 |) S! q' z+ |2 S/ |6 T+ g) H, C9 j& z+ O
5 Y/ s" B( H  p9 K% F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
0 S- s) f4 |& Q  j9 t, j#include <sys/types.h> 
& O$ Y5 W( H( O: d$ ^#include <sys/socket.h> : h- q: t" B/ O, u/ [: I' l
#include <unistd.h> 
) x4 w9 V7 v( W#include <netinet/in.h> . {0 o$ H) N) k2 N
#include <arpa/inet.h> 4 j8 _( x- p4 R
#include <string.h> ; C" E# {" f9 D: t4 C
#include <stdio.h>  : w/ K7 N3 m6 E. ?4 u
int main() {2 _) p0 a- j- E$ w7 M
        int sockClient;; Z# Y  h, t. t1 x2 [
        struct sockaddr_in addrSrv;
, N: q) @* K7 x+ `        sockClient = socket(AF_INET,SOCK_DGRAM,0);
: a, R* w- p3 J9 {, \+ v        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
6 d9 u# [2 ?2 T0 @4 r( {        addrSrv.sin_family=AF_INET;
4 e7 l+ R, k4 ~) e3 f3 O        addrSrv.sin_port=htons(6000);, D4 k6 _, K+ a3 F/ j7 [0 Z) O
        while(1)
& |4 V* E& x% S# l- {/ C        {
# X- `: Q' x4 j% |                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
# {1 U8 L3 _( ?- m) A                sleep(2);. [( l3 \: V3 D& B- g
        }    
1 L, R( `- y# C4 \5 }" P& Y! F7 h        close(sockClient);  + U2 A# M: I$ Y' x9 c% w
        return 0; 
3 m, b' w2 B- D: ]}3 Z. b* p3 p$ ~  ~0 g8 ]6 U1 \

  R, V0 H& K5 b" W: M0 u: S4 L* T6 l4 e& c' N
客户端:
  1. #include <stdio.h>   S" z" E5 R* c/ {/ `( j# p% D  ^- d
  2. #include <sys/types.h>   W' }- n* J4 X# ^9 ~3 x
  3. #include <sys/socket.h> 
    ( L, K% e$ z$ L7 b3 d( I
  4. #include <netinet/in.h> * \& s$ o& R  H4 Q+ E, L7 Z9 [( w
  5. #include <arpa/inet.h> : d" G9 l% t, `
  6. #include <string.h> ' K8 {) ^9 R7 z$ X; d- D
  7. #include <unistd.h> 
      ?) O  @, x9 M* G- T
  8. #include <fcntl.h> 
    , O; y+ K3 l) e7 m# |
  9. #include <sys/time.h> 
    & s1 }2 n' d0 G6 [0 y
  10. #include <sys/select.h> 0 G1 r! Q+ M3 ]4 p$ `
  11. #include <sys/ioctl.h>  6 G: i& m9 J; I+ M& g* t
  12. int main() {1 N5 T1 G' }8 ^8 `
  13.         int sockSrv;7 H, I/ \" K3 A
  14.         struct sockaddr_in addrSrv;8 n9 {/ G9 `3 \( t; R% b
  15.         int len;
    " W% y6 r( w+ X2 d" K* D# B% c
  16.         char recvBuf[100];
    ) U( Z8 h" u  B" F+ S
  17.         scanf("%s",recvBuf);8 V- Q& O, _" ?3 C# m
  18.         struct sockaddr_in addrClient;  b: y5 D; f6 W- P4 N, X. @- ]
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    - E$ @3 J; s- w1 e, h
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    & N6 A; _! i6 e0 g2 z8 m/ c* \
  21.         addrSrv.sin_family = AF_INET;
      q4 `/ @' x! i. Z7 R2 t4 {
  22.         addrSrv.sin_port = htons(6000);
    ( m* ^: S$ |  h; P- R. J$ _9 B
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    3 c+ l' h0 b- E" i% s5 d4 u
  24.         len = sizeof(struct sockaddr);
    5 x, |8 ^. P! @" c0 C6 W7 t
  25.         memset(recvBuf, 0, 100);& ]7 p: N1 Q0 ^* M+ w* ~- l: p1 J( r
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);1 @; v7 r# i4 M8 r! q3 b& X
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));3 D& l( r, [3 ?6 [8 e+ ]+ H- e. z
  28.         printf("Client data is:%s\n",recvBuf);. y0 l" S" ?4 }6 E- D( ~1 z% M
  29.         close(sockSrv);: F  q# K1 h: C. @/ F! p9 d. d
  30.         return 0;, f: e; V, }# I$ {' u
  31. } 
复制代码

# Y; K$ e( K% P( ?/ l2 j1 E* z! @. S8 a5 }3 l" h8 I& R( h
# a- S8 \4 h9 t" ]; P. y
6 \+ @' h( \% E& x2 }- m. n) T( e$ x+ a
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-19 22:32 , Processed in 0.056443 second(s), 18 queries .

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