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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
3 {' v7 Y8 e. {. V+ ^4 w
  1. #include
    ) w, s' H0 W  O
  2. #include& c8 w, s# h& F
  3. #include* W, T! l7 `5 O$ H5 N! M: r1 P) D
  4. #include
    ! q, h$ N6 G7 Z$ f- X* a; ]
  5. #include
    % D1 P' ?4 W( x8 n  D
  6. #include0 @7 I! \' u# }9 A0 z! V+ w
  7. #include
    ) E4 n( `  S6 _1 {6 g
  8. #include
复制代码

5 Y0 d1 ^4 J5 _
: Y( O2 f1 p7 u& N) {+ |3 ^0 B服务器代码如下:
+ F6 r- D# D2 ]: q4 }
  1. #include
    + I4 n5 s6 q' s/ o. I, q, r2 c- ^2 g
  2. #include
    : y) h. E. q; f# e6 N8 c
  3. #include& _. v  T' t+ j  J* z2 @0 _
  4. #include
    ; R6 a0 a, K/ D$ h6 q* P( e: r
  5. #include" x3 A- r5 P% s$ X  m8 B
  6. #include) }  x- m" }, B1 l5 \  X
  7. #include5 W! }9 O5 Z) L3 s. s8 n
  8. #include
复制代码

  l9 j. e. h$ Y  L0 h* C5 F! c, k8 T* d. g, [  U

' o& q, A% R( Y2 J5 M- R* e

% \7 p! F% j! f8 Z1 {) l2 Q: R% `. `0 h" w% _/ d# L0 d, U% b. l

4 y7 z0 A" D8 W* _3 ^, \. U; ]$ V6 e
6 c( @% c2 p1 n6 C% Z# [& d+ Q  f
$ |% A9 Z+ n. Q# X

* a+ X/ c% q5 Z/ f7 J5 h

2 E: r5 E: N( u' L, d- Z5 a! |" U/ E; R& W4 m, E( N! {( `

. ~  W2 ?/ p2 ?
" I3 J2 y0 ]( f; \& F, K1 g

+ k. u" o4 k& d- {
3 Y( h( _4 w- \/ R  {7 r6 H( _
) R8 I) V+ A+ Q( G2 r( R' s
4 x0 z" [1 F% L# }

+ [  U6 q- A9 R2 P- V- ^
. s' q% o9 y- `9 c/ |

- K* H, y/ S# f$ T) ^4 [9 }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:8 V, w9 G' P- y, w! f; V
#include <sys/types.h> 
" P, Y! E' {9 Y/ u* m; C' O#include <sys/socket.h> 
4 }5 N  a3 N* |8 n3 I8 s#include <unistd.h> ' e$ s! o9 [- o: |! p  v
#include <netinet/in.h> & B$ @) l/ t" c4 c. o0 @
#include <arpa/inet.h> 
2 @% v  f  Q" D0 i8 o/ a#include <string.h> 
" G! x" F% M- Z#include <stdio.h>  9 I$ u8 b2 e# P' Q* c; e
int main() {. m2 ^: {' O9 E
        int sockClient;/ |+ L+ A. Y' ]0 i7 p
        struct sockaddr_in addrSrv;+ _$ C$ S- [) c! ^
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
2 K- Q, m7 r! ?! m2 D        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");/ e& O* g% M' ~9 ?" b$ r1 j
        addrSrv.sin_family=AF_INET;
. o. Z# |9 A! V- q3 `- r3 M        addrSrv.sin_port=htons(6000);; R5 B1 T9 d* K  U5 w6 z4 @+ j
        while(1)
0 d9 T( b5 U8 \5 d        {
* k% L9 A8 V6 S3 a2 i/ A2 e2 w                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));/ k; L, p8 r# T6 E
                sleep(2);$ D  Q: ?9 w' {* i8 S$ u9 |
        }    
- V) Y' C  r' G4 z+ Y        close(sockClient);  ' F2 {) \* b1 Y7 ?6 N! @
        return 0; 
* X7 R2 W5 m4 i}! x6 F" I, A0 Q* U+ p2 L

1 m8 @' N8 o* ?9 D# i
: Z, ^) e8 p* E1 @* I. a客户端:
  1. #include <stdio.h> 
    % K0 z4 A; W" Z$ b7 i  Y8 M1 c5 `
  2. #include <sys/types.h> - p. w( x9 k1 t8 x
  3. #include <sys/socket.h> 
    + |% c! Q  Q- z- O3 ~  ?
  4. #include <netinet/in.h> 1 f2 U- R1 A9 p8 ?5 Q5 J& ^
  5. #include <arpa/inet.h> 
    $ M/ _3 s# V7 z% R4 `1 H+ r+ T
  6. #include <string.h> % `4 \# C( n7 Y  y" i3 L3 Z5 C7 B
  7. #include <unistd.h> 
    8 e4 ?( u" x- D% {; M) \
  8. #include <fcntl.h> 
    4 C+ P2 M& |& l% r! A% H
  9. #include <sys/time.h> 
    ) a4 _( A. m7 q( m7 t: R1 ]3 u" n  B+ q
  10. #include <sys/select.h> 
    % X, }! n$ g; z) }" w0 R
  11. #include <sys/ioctl.h>  ! `4 u# N9 i) u  a
  12. int main() {9 W3 N& b5 a+ b4 d
  13.         int sockSrv;
      m& c+ l  G& @0 h
  14.         struct sockaddr_in addrSrv;5 j8 t1 y/ G! l9 g
  15.         int len;9 V: I3 H! g9 W8 Q
  16.         char recvBuf[100];# ]6 |1 `- V0 I% X8 V
  17.         scanf("%s",recvBuf);5 @% r5 N: D# K' D3 H& F3 _
  18.         struct sockaddr_in addrClient;
    , A% Z, p! E2 c4 H3 }
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    4 s/ ]( X  }6 P' v2 K) c
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    , [$ S, X1 D+ |) P  W
  21.         addrSrv.sin_family = AF_INET;7 H9 L( b5 x7 d' i' z) O$ X
  22.         addrSrv.sin_port = htons(6000);
    / q% K3 N4 f% A( v% ?4 V
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));% ^  Z4 x6 E9 K% a6 I# _
  24.         len = sizeof(struct sockaddr);
    . ?! A, w; n4 k; j5 s
  25.         memset(recvBuf, 0, 100);
    , r$ |9 {. ?- j& T  @4 g! l& Q
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    9 q/ i4 l, g+ a$ i; q( E: j/ k9 d
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    - A0 S' s( A. C7 [
  28.         printf("Client data is:%s\n",recvBuf);
    7 U# ^" }  k7 [3 M
  29.         close(sockSrv);2 `1 Q5 z, f" n: x$ W7 [$ o' q
  30.         return 0;. r& o: T9 r3 t0 g1 p5 B
  31. } 
复制代码

# o% Z9 m4 t' {. n* S" `& k6 ~
4 I! p/ s8 M0 u+ q' ?1 s. Z% Y4 d% ^5 x3 I- |4 @% T4 b1 Y3 D
1 d' u" T3 `0 d% t2 o0 P; T
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-16 16:58 , Processed in 0.057878 second(s), 19 queries .

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