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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:) u' X- O* k/ {: w# G! h2 _, m$ T
  1. #include* I" y7 d, |2 ^! E
  2. #include& Q3 o1 e0 U; G$ e9 B( L4 r8 H) Q
  3. #include
    , ^5 h( q' Z/ ^' F% [7 Y0 [: `
  4. #include
    # B4 O/ {6 Z: G  H' z: u( D$ g% U
  5. #include
    % i5 }7 K' Q; G# }( K/ a& R
  6. #include" p  u# p& |+ W+ v- n* i
  7. #include) R6 c3 \  w: d6 b% X
  8. #include
复制代码

0 p9 {) r/ o" F. r7 S# X( l1 w" S! Z& `( g
服务器代码如下:
% b+ s4 w) R4 r: N8 E3 n, j
  1. #include
    $ H5 Y# H' `/ _0 I
  2. #include& O, X& T' E, |
  3. #include
    * n! f: ^: \- ~! ^: H
  4. #include5 p3 Y' v- o/ m
  5. #include8 A/ _4 x& n' i9 j
  6. #include; ~% O$ f* Y$ @- X
  7. #include9 E3 d- ~+ c( _9 B
  8. #include
复制代码

6 O9 M5 o. a* ^4 a0 T9 V
5 N$ N; t; A4 |! {4 _7 k$ V
6 `' v3 }- |4 R. t6 q3 e

$ n& P8 D' Z( G) j" b' u% C. N# Q& N. D8 v% {# m: U  E7 |
7 }& r! }* A6 R% [) p

) g7 q  e: e0 f
- H6 R0 {# ^/ c% z- H

: I" K4 S: F+ s" _1 @
0 Y; v% X1 }* G5 [1 T3 }  L
; O, z, O5 H3 N) U7 u8 z  s# v

/ b( N( T) H  K& q
+ b- F% r7 V! b, h0 ~

, h; {, W8 A0 I/ O, i& \4 v% W3 Y8 Q9 r  `& V8 W

4 |4 c: v0 {% b
( o, l1 Q; `. n/ h- x" Q

- e% r8 w9 d$ N* V2 h  u( B7 G& s
3 ~+ _5 w: u8 M2 J! a. u" ~/ F( a3 Y( V0 V
& G' x7 f# O& B. U7 Y* }+ t8 g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
% {" ]1 B4 f/ A; @# S" p#include <sys/types.h> 
; D- j: U; G# @1 r5 O. X#include <sys/socket.h> # b! K: [' H& j% ^5 [
#include <unistd.h> 
4 i. r$ S3 f& D0 A#include <netinet/in.h> 
9 f3 f3 n9 `. f' Y/ x( q4 n#include <arpa/inet.h> 3 ]# }) Z, w  w: r
#include <string.h> + i* s3 B& u1 W2 I0 b
#include <stdio.h>  * [0 ~6 }. J4 Q" c7 ~$ G
int main() {9 B5 c1 f; A2 V
        int sockClient;
& p) |( c4 X4 [( f# R* Z: J! q        struct sockaddr_in addrSrv;# v5 \0 D9 n1 w
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
* @  K  }/ C, V$ R# W6 T; _        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
+ [6 b1 E0 g- {8 f7 `6 [        addrSrv.sin_family=AF_INET;" t+ [  |1 P+ K9 Y
        addrSrv.sin_port=htons(6000);. u" E- b1 j% y: t! |$ c
        while(1)2 s# C* Q) d, {1 x
        {
. S8 P$ M: A- ?, w1 v* B                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
* G! X, H+ W! S3 d# j7 G& a                sleep(2);0 q* I- R# f6 ]4 V& x( H- |
        }    
+ v+ g) T2 W+ C" I        close(sockClient);  2 K" C9 @( S9 }! [$ |+ r" U0 Q
        return 0; 
& ?% q( D- D0 I& _}2 E+ s" s6 S$ w. q8 Y* x% Y

) S7 L4 v  W6 P, q% z0 W. c
! v/ f( k5 Y3 q3 a( t客户端:
  1. #include <stdio.h> 2 b# @4 ]! W4 B; q& e3 x6 o0 f
  2. #include <sys/types.h> 
    3 v; g- S; A1 Z3 Q! S/ h9 |9 O5 I! l
  3. #include <sys/socket.h> 
    : a9 ?. _' U3 _
  4. #include <netinet/in.h> 
    # }. _  v0 R& I
  5. #include <arpa/inet.h> 6 m# l  @6 b1 U
  6. #include <string.h> 
    # Q2 Q3 g8 B+ s: H6 I( C
  7. #include <unistd.h> ( v$ P6 d* Y- U: f3 q0 c  j
  8. #include <fcntl.h> ! o+ w# ?5 \! B: r6 m, a
  9. #include <sys/time.h> 
    ' [  {7 L: H1 Y
  10. #include <sys/select.h> 3 a1 b1 L1 ]# P& A' [3 s* H
  11. #include <sys/ioctl.h>  
    ' a6 j# P* A4 i2 M: Y5 _
  12. int main() {
    ; c/ p, R4 {* Q
  13.         int sockSrv;
    3 r6 y0 n9 L$ c5 p
  14.         struct sockaddr_in addrSrv;  x5 F2 Y% P2 R# k9 o
  15.         int len;4 B& |/ g: q) D. A6 D
  16.         char recvBuf[100];9 H4 S% g3 D* r, G  Z
  17.         scanf("%s",recvBuf);) _( e- d$ W3 b( w
  18.         struct sockaddr_in addrClient;* B# B9 D% a  \! q) q9 Z" a
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);9 [, ~& q2 S- o& c* u
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    & \+ j1 f; q0 J$ a
  21.         addrSrv.sin_family = AF_INET;
    1 }7 h& m# w7 A! W8 ^, C% @2 a5 q
  22.         addrSrv.sin_port = htons(6000);
    ! E: k$ E4 h; n% Z6 H+ ~
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    $ ^4 L  W. ?* W1 C! g& a% T0 ~
  24.         len = sizeof(struct sockaddr);' u  [# Q. k: f: _. B3 a2 H% T
  25.         memset(recvBuf, 0, 100);
    9 H& D; r! H+ w+ o$ v' F' u
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    7 ^& I. i2 z0 |# b) w
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));- u1 _: p" m+ t7 c  o6 G
  28.         printf("Client data is:%s\n",recvBuf);
    8 K" M! k, G+ N+ h
  29.         close(sockSrv);
    2 j/ h/ \! w% F3 g5 H0 i
  30.         return 0;
    ) p- }# I/ z9 D* j
  31. } 
复制代码

# d( P3 [+ n: [8 B7 @
+ _7 S* e+ ~0 a. B- h9 m  \: M; c5 q7 r7 u7 C# }
# g: v$ o7 t+ O% u' l) @6 c
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-20 01:02 , Processed in 0.129819 second(s), 20 queries .

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