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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
1 B" R7 l! I, l1 ?$ X- d& E: B
  1. #include
      t- K) E4 m# s  g5 w
  2. #include
    + Q/ J9 }, p! b7 ?" @  j0 `
  3. #include
    4 z1 I( B! J6 [4 T+ b) ^$ Z
  4. #include
    3 R# Q# R7 p+ F; w2 s0 a3 _+ }' h
  5. #include
    3 l0 y7 b* h9 `5 J$ o, N# W# C
  6. #include- [, |* Z, Y) L3 m" X7 }7 _
  7. #include2 Y# R3 u' v0 W- q( Z
  8. #include
复制代码
' ]) a3 _3 t% ]+ t5 ^
' ?; q. K! J5 Y# N9 z
服务器代码如下:
' X" \8 T; u. H5 k, x2 q8 n1 }
  1. #include) D1 S  x+ H8 m  V6 T' _
  2. #include
    ) j8 r! A4 Z8 X$ [6 v
  3. #include
    1 i0 D. q1 M: J5 F/ e' ?3 ?
  4. #include
    3 e  E% j' m  X0 z7 g( e$ h3 I
  5. #include
    " Z  K8 s& W6 v: }$ r; d
  6. #include+ w; L4 P! ?4 b" ]% @' m
  7. #include9 K% E3 [& }# v
  8. #include
复制代码
+ f5 S: [. I) `3 `5 Y
6 U% d1 W) w5 ]% G" m
2 |* U! s  {! o9 q9 m

& |6 ^; @7 h! t* c- C7 D$ _
( A0 x' F$ H9 |0 j

5 e9 M% b7 E/ i/ K+ F) t/ ^* Z" Y3 O  f; |* {( P

% R9 A7 D1 B  T7 \: j5 v7 c" @: s6 ^" ~
  u3 i9 y0 ]8 B

6 R$ W! z3 y5 h! e6 c5 p- d
2 I. l- c! t. H' p  Z) }2 {7 E6 e# {

; l) `) t6 X- D  D. K, r
. I5 V( {' N6 g: c" U7 M

9 [. S- ~9 O* ]6 ~
" \* i" X; \) Z1 t+ Y. y: N/ t  X
1 [* F4 |4 @5 j5 g' s- K8 ]

+ Y5 K1 l1 h- C" q+ _2 d# H9 _4 _' {, m0 u( v
* i- t8 ?7 M# j0 o9 U/ T1 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
2 _1 _! {8 `. D6 W- p; l" A  @#include <sys/types.h> ) Q- P3 ]% W/ p2 i9 }
#include <sys/socket.h> " _8 N1 e, B( X: |4 p& @
#include <unistd.h> 7 E% F- o) z: \) x
#include <netinet/in.h> ) [! w$ d8 u5 a/ Q, W$ U
#include <arpa/inet.h> 
% q$ V6 z! u  E7 C#include <string.h> 9 D: b' D/ ~5 m3 c2 ]
#include <stdio.h>  8 Y. H) b( r. D- N2 w8 J: g- Y
int main() {
* [* A0 E; f' c4 _  @" A. \        int sockClient;
4 @& Q; [: ^& J  {        struct sockaddr_in addrSrv;
' e6 k3 F  Z, Q! F0 L) Z; L2 `        sockClient = socket(AF_INET,SOCK_DGRAM,0);
& R+ _$ b4 S; ]2 I$ W/ ?        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");0 w: j) [3 H0 `% u) H
        addrSrv.sin_family=AF_INET;
! X" m5 y0 _( W# [7 `; C& z        addrSrv.sin_port=htons(6000);% \$ H. t2 }% C: q- b& M
        while(1)! i; p+ g" L1 h- b0 R# [5 }% f% r
        {0 x7 e" o! L: O( {! l' _4 s
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
) b- Y& q, {" W( h$ v                sleep(2);# y$ b4 p' k: ~  T# f
        }    ) ~9 w5 Y5 u  s* s  X
        close(sockClient);  : S! K5 W: I3 N
        return 0; 
; I. C( R! @& b: u, ]7 E}/ K3 R- Q' H' v
* `/ b* Y# h$ a9 y

4 S3 \7 D/ r5 z客户端:
  1. #include <stdio.h> 0 |2 o4 `- O( c2 w" z" I" q: M
  2. #include <sys/types.h> 
    / X& {' J* i; L( [1 |( {
  3. #include <sys/socket.h> 
    / g' e/ P/ j- Y2 B
  4. #include <netinet/in.h> 
    / C- k6 ?" S  p9 {6 A- r' X2 ]
  5. #include <arpa/inet.h> 
    , S5 u. _# z* T; x- G% _; `
  6. #include <string.h> 0 G% Q. V, m* t) ~
  7. #include <unistd.h> 
    - |' d% b5 k8 m4 ^8 s
  8. #include <fcntl.h> ! x( l, H- s" G4 \) M' u
  9. #include <sys/time.h> " \' \% f8 ~6 d* \) A1 P
  10. #include <sys/select.h> & B$ l' f; C  e5 C
  11. #include <sys/ioctl.h>  
    / S4 C- d# F& t, Y! t
  12. int main() {" {5 Z+ ~4 C7 B6 s7 H% I) r2 k) l, [
  13.         int sockSrv;
    # U  h( N8 o$ z: K- R0 G4 S
  14.         struct sockaddr_in addrSrv;3 W6 i" R7 W* H% @1 H7 e( K
  15.         int len;
    ) ]9 t, ~3 a, Z( I" C
  16.         char recvBuf[100];* J6 M8 Z8 R  _6 E# I
  17.         scanf("%s",recvBuf);3 S1 _! y% e* ?4 O5 F
  18.         struct sockaddr_in addrClient;: p; S: D, b4 F1 g3 A
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);( e' x. \% `: g
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);+ _8 i6 o+ |% f6 I$ T% s" u4 g" o) l
  21.         addrSrv.sin_family = AF_INET;4 v/ B2 G6 `; o9 @& Y! e3 E' @& i2 C
  22.         addrSrv.sin_port = htons(6000);
    # @- E, q$ Q, h- J; }) F5 ^' |" U
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    / p$ P* Z4 ^7 E" c- q; h/ P0 y+ V
  24.         len = sizeof(struct sockaddr);( g5 M( s! M, T; M
  25.         memset(recvBuf, 0, 100);$ T7 a( R1 I$ r( S2 S3 f
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);8 V+ X3 g5 z3 W* Q3 \; |+ H5 m
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    8 \7 D/ _; K0 k/ @$ Z0 f" r3 G
  28.         printf("Client data is:%s\n",recvBuf);
    1 j5 s7 R2 D5 E+ G0 r4 g# `
  29.         close(sockSrv);+ w/ l1 {( ~' g0 N& ]. q& Q1 I# o
  30.         return 0;9 ?8 ~/ L5 {1 d, m" V1 X
  31. } 
复制代码

0 P8 W" p8 k$ i5 g# k( z: D* \" r
9 _+ z9 P+ O: A2 m9 N7 I% L9 e! U1 U0 L# i! Y

- \+ ~/ D  w% k! {
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 06:56 , Processed in 0.130146 second(s), 18 queries .

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