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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
# M$ [* [0 @! k1 Z# M  }
  1. #include2 T4 a, @! t0 L7 d+ w/ c/ Y
  2. #include
    2 q3 K9 ~7 S+ t: U) g
  3. #include/ V5 I- N8 `! g# B- Y
  4. #include4 x7 R" q" i6 h/ J$ e5 [
  5. #include4 [$ I7 v# |, \) p7 `
  6. #include+ v) C4 g) j# y: m5 Z8 G, M
  7. #include- `0 X3 n2 G# P6 [8 b* U0 |7 F! Y+ \
  8. #include
复制代码
) k( g# Z, z/ |
6 i1 o7 |* t5 z
服务器代码如下:
+ h  q, c- Z' q4 p  G" M. a
  1. #include- n/ s; A6 [2 H% v9 l
  2. #include7 a, m0 [. _( x9 ?8 O* ~8 S
  3. #include3 }7 R8 n  X: `/ b: B* X
  4. #include
    + u% \( m7 H/ {- ^5 L8 e2 n0 }
  5. #include8 H( }  y# O7 O
  6. #include4 g3 y! H- R- L2 H' O
  7. #include
    . D! o& W% {! Y4 P# j' t% ?; ?! V! F2 w
  8. #include
复制代码

  Z- t8 j. ^$ m& K, n5 g* M4 Q0 {% W) J
1 G" T4 o- F2 v( ]

' Y& H% K) n7 t5 `: n+ Y
2 L6 ~& V, h6 d8 J
# q+ v; f. {4 J& k' Z; h
% ?% ~% N2 [! o  n6 H

5 \0 ~) ], Z: R" v2 p6 f: T! o: j( d' ?: E7 m7 w
+ E; y- s, [  L6 U$ w! I% A

$ y/ f/ s/ e8 q* {
, i+ ^- ^- g* k  R: F; Z

% Q2 V  o* D/ ]* X  U! J
5 {3 b6 v) P8 Q1 {& r6 o* T( Y

' e4 j. v5 J5 \: Y3 x

+ S! ?9 O3 c9 {3 l$ i. Z
1 v" y- H: Q9 p2 K% j- Z7 h2 V* [

; P. n1 V2 x( J5 S! Q. A  R, d9 |7 E6 o" }" m. Y

  L8 J( D0 c0 y" w5 l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:9 \6 i' n( z7 w" R
#include <sys/types.h> * ~8 a, _! l( ~! K" R6 f
#include <sys/socket.h> 1 v. |9 d3 G3 x5 @0 v( \" v- O( Q6 J! Z
#include <unistd.h> 
" U; n  x8 D2 a0 A5 y#include <netinet/in.h> 8 Y3 {6 _1 u! H- p. a) z
#include <arpa/inet.h> 
% A! e4 E& U6 y/ H$ h) J1 U3 z( d#include <string.h> 0 k& s+ c* n0 m
#include <stdio.h>  1 P! w7 {8 H$ U: n, d) O, N8 m
int main() {
/ p5 s. W4 L' l9 E  n+ [+ j# @        int sockClient;, {) S. ^: f6 L% S4 X
        struct sockaddr_in addrSrv;
  P# h9 R" L% Y        sockClient = socket(AF_INET,SOCK_DGRAM,0);( a4 G& `5 p, H7 ^2 b4 V- [
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");, M# @0 z# l3 o6 n6 S1 d8 Q5 ~
        addrSrv.sin_family=AF_INET;
3 t: k7 [( W) ]6 v, L$ R        addrSrv.sin_port=htons(6000);: m6 Z0 c/ k7 H
        while(1)! s- g, {  m: `+ g2 u
        {
3 a  U1 a' a9 ^7 C: p                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));) I! b1 I6 A* ~2 ?& n
                sleep(2);
$ Q! L/ A- }9 q8 K" x        }    
9 M, A5 y$ d8 U. U9 U        close(sockClient);  
3 y7 \- V" z; ^6 M6 y) [        return 0; 
+ P- v& f8 Q5 }$ ?# j}' b$ w# X' v) e% ^

4 _7 i( g  ^& v" h7 K/ J/ F. k# Q1 ?$ z
客户端:
  1. #include <stdio.h> 
    # x. `7 w; }. \  D: Z4 r1 e' Z
  2. #include <sys/types.h> 4 h6 _+ P* U8 O2 |
  3. #include <sys/socket.h> 
    . \9 F3 D/ S1 C% q3 ~
  4. #include <netinet/in.h> & q2 ^8 o5 \0 P3 D/ r) e% T9 _# p
  5. #include <arpa/inet.h> 
    % A* b" y8 I: n, D0 L$ u  W9 r
  6. #include <string.h> 4 e) W! p& M, H
  7. #include <unistd.h> 
    ; |) C  d0 U; L4 c1 K0 K
  8. #include <fcntl.h> 
    1 [: s. c9 j  b- b5 H. Z# K
  9. #include <sys/time.h> $ ^5 X- ^0 K- K- Y: `/ ]
  10. #include <sys/select.h> 
    3 ?8 q# o! }/ V1 x5 D
  11. #include <sys/ioctl.h>  
    9 }0 D# r5 U9 n+ F9 H/ W8 R
  12. int main() {
    6 U0 G9 w( j- A4 y7 N8 c6 n7 `
  13.         int sockSrv;
    1 B4 S9 x4 P0 U$ f# l
  14.         struct sockaddr_in addrSrv;
    3 v) M8 f+ E6 Y# [3 D
  15.         int len;; ?( r& R5 m% c; k
  16.         char recvBuf[100];9 `- r% ]6 l1 ~
  17.         scanf("%s",recvBuf);8 @+ i- }! I, ~1 Q5 r4 Z1 h! U$ t% @
  18.         struct sockaddr_in addrClient;
    7 w6 n1 ^& k) h
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);5 ^' Z* p5 O; Z: \5 ]
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    : L; b! ~* P8 `4 L4 k2 j
  21.         addrSrv.sin_family = AF_INET;- r6 z7 l7 o2 v( @# F0 a6 q3 v
  22.         addrSrv.sin_port = htons(6000);6 K# m% @! i2 `: E1 r
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    3 o4 s8 m$ h/ O3 V; z+ d  {, w
  24.         len = sizeof(struct sockaddr);
      ?1 \8 n3 e3 F. W* X4 _
  25.         memset(recvBuf, 0, 100);1 j8 T" S6 P3 g5 Y
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);& n8 j# J; [* _9 q
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    9 m" S. E" {$ R3 Z+ N
  28.         printf("Client data is:%s\n",recvBuf);
    " _/ P4 r/ W9 p  L& o& A! d
  29.         close(sockSrv);0 e6 l. v% m3 p
  30.         return 0;
    $ b8 h( f1 X4 V: z3 `7 M' O
  31. } 
复制代码

$ |0 z6 Q' ?3 W) |4 R4 J3 l/ f
/ r" {& v7 ^, ]! \; x1 A* x8 t. e4 q  Q! _
4 i  D& }- Q( h
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-16 18:13 , Processed in 0.063294 second(s), 18 queries .

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