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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:( j2 [4 w/ u3 d' [
  1. #include
    ; _7 Y# `; o5 ^/ S* G8 s) R+ k' [
  2. #include) ^. H9 T5 z& }, A
  3. #include0 H4 {+ H2 a. f; O/ D8 w
  4. #include
    . `! S4 N& L+ C+ P& [9 q+ F
  5. #include
    % t: ?  k" B8 Z% \
  6. #include
    * d; ]; U. V, P5 Z$ E4 P
  7. #include# e( U# a( \1 s9 g& i
  8. #include
复制代码
+ V6 _2 |/ b$ K5 g8 n

! y5 c/ _' [6 K6 x服务器代码如下:8 t2 Y7 l7 j. Y6 g
  1. #include; b0 |& `) T% }# h
  2. #include
    * Y+ a% E% k0 D- @" c
  3. #include
    , U* @6 i+ \; t. |' S
  4. #include
    5 l/ j6 f0 X% a6 y! Z& Z
  5. #include1 N$ z3 V* e# D) y* K
  6. #include
    / w: I: v" F- u
  7. #include- Y4 E( l" b: k/ c# J
  8. #include
复制代码
( `1 K9 |% p& T" ~# t( \- a* ?
. _* j& x7 t, n# U

( b8 m6 @" t9 N

" h5 C# ]4 k. b! s3 n! i
- L: O$ c/ {- g

6 x7 o" G; z9 J( X$ H+ r9 d9 Q$ E! t9 b

: p9 u$ ?1 l; J4 b
8 p7 d# u9 x1 N6 ^1 f5 I! ^+ h8 D8 h

- A4 G; ~- g; \# l1 f# q. I+ S  t7 w9 f5 g7 F
7 ]% p3 i2 N! f

7 }% ^& X4 `8 k

! Z! @1 h# T# D
4 T, I# R8 _* W- t+ T# v

! y, N/ c5 N3 b, G" F9 T2 P' C' M3 l5 L8 X* c& I
* z- u3 \' ]; O: {
2 A0 }  Y& w2 Q! U

/ \- q5 R$ f' h6 j9 G. @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
' P4 Q) K+ I; k0 R5 }#include <sys/types.h> 1 M  `( z: y9 N
#include <sys/socket.h> ' ~  o0 P  M! }  b; R
#include <unistd.h> 9 }5 `; M" P8 e6 i4 b7 z+ i. J
#include <netinet/in.h> 
$ ?9 R" U9 P* y#include <arpa/inet.h> 
2 q( s6 w8 m+ j) w#include <string.h> 
! x% q- v) C/ m# ^0 s: w% M#include <stdio.h>  , `& U( Z( J3 P  M" W* T8 M4 g
int main() {
- u: t$ N' o2 U) m        int sockClient;
+ ^/ ^+ t. D. f& g- J        struct sockaddr_in addrSrv;7 x: w9 @, l6 A
        sockClient = socket(AF_INET,SOCK_DGRAM,0);* w) O7 Y# z4 C
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");- k5 A, ?$ `0 X& J4 V; q( V
        addrSrv.sin_family=AF_INET;8 n8 V' w0 J, G+ `" Q
        addrSrv.sin_port=htons(6000);$ m/ B/ d4 c% ]) J+ x
        while(1)2 i  o  S& j3 _) a
        {4 ~8 L$ M" v6 W8 P6 s4 c
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));! X4 T' [4 u# z, a7 F, F4 h
                sleep(2);
( l4 x0 v1 E- ~& [4 O        }    
  ^  h. L/ w4 j4 V3 ]& p        close(sockClient);  + `. a7 C2 {/ D8 [
        return 0; 
2 p+ E' {7 s9 A  F9 U4 O7 k& @}
  g3 h3 E0 c  J! h' s- B5 p- [2 g( N! I! h

' U9 n5 s  e+ x/ o+ H1 h6 @) Y客户端:
  1. #include <stdio.h> 
    ' y, S: g1 \/ {4 F
  2. #include <sys/types.h> ( m& t( x: }2 d* I9 E& m
  3. #include <sys/socket.h> 4 l' ^* g* u2 \  G7 Z
  4. #include <netinet/in.h> 8 i! M3 V4 w9 h5 N6 A/ ?1 c
  5. #include <arpa/inet.h> : Q& ]' N4 B" x; g5 l5 @: l
  6. #include <string.h> 5 Y$ B5 |+ w# _" R9 `" g. u
  7. #include <unistd.h> 
    % x2 ~3 X5 g" ^  ?1 l: Y
  8. #include <fcntl.h> 6 c, n# b. B- ]
  9. #include <sys/time.h> 
    1 I) \+ Y4 w+ k( R! D4 U
  10. #include <sys/select.h> % ~: K3 R8 j. w. O
  11. #include <sys/ioctl.h>  ' j" y7 a  s, w, \7 o- N
  12. int main() {& b7 r; h& r8 }: B
  13.         int sockSrv;" k& K( C# q0 |9 O+ f) c
  14.         struct sockaddr_in addrSrv;
    - E1 B4 }+ j9 F2 \
  15.         int len;" N7 P6 A( b2 O% g* z: H% p
  16.         char recvBuf[100];
    * e6 z8 K$ W$ y5 y% X% P4 `6 M
  17.         scanf("%s",recvBuf);
    2 I1 y$ j: z9 u* ^' H
  18.         struct sockaddr_in addrClient;6 r* ?8 ]" x! ^& i/ L: |# L. ^
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    5 P2 ^* K$ o. k5 Z
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);2 [8 [; G( f7 a) F5 L- `
  21.         addrSrv.sin_family = AF_INET;
    0 G+ [" C. ]0 U  C
  22.         addrSrv.sin_port = htons(6000);
    - R" I# \  N. {7 ~: R( e4 z7 A2 ]9 [
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));; ~) v( W' }& q
  24.         len = sizeof(struct sockaddr);
    # n' v  y# e$ Y; h
  25.         memset(recvBuf, 0, 100);& w, m2 P1 X/ m0 C4 b/ p
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);( v5 O  b- X3 b6 C
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    " C8 N# B# @5 ~" Y1 |
  28.         printf("Client data is:%s\n",recvBuf);
    1 Y) }" t4 }% u. ^
  29.         close(sockSrv);: d7 F7 Q3 I7 E) `3 N
  30.         return 0;
    ) a6 p# |6 ?: ]% y" v% I7 n) G
  31. } 
复制代码
4 {* m9 F9 @& H8 I) a3 M! _
5 T! i9 @& u* y4 K
; F; b; J+ P0 ?
8 H( i5 D! M8 m6 y, n( i
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-17 20:01 , Processed in 0.127670 second(s), 18 queries .

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