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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
6 k- E( m* |( Q3 J) u$ a. f! _2 c' j
  1. #include2 `  B# S/ T3 p% n+ H- T
  2. #include
    1 c+ r% x# z4 M9 y8 m
  3. #include
    7 z  m' a3 l( B0 C
  4. #include
    3 g% }. d  l) i( _5 M
  5. #include
    ! o  m6 w4 ~0 P
  6. #include4 j2 Q7 r1 e6 o& ^/ @
  7. #include2 \4 g& }3 Z4 Q: ?( b) o
  8. #include
复制代码

+ t8 C7 @" g, w; n0 [  E" j+ L4 D. _4 P( M9 ~* J
服务器代码如下:) K1 T$ o/ s7 b) G) J( I# F
  1. #include
    % j& s( R9 E4 w& P3 J
  2. #include1 s8 E# W8 ?6 F+ G+ y* X3 E
  3. #include. O7 I0 W1 l* \
  4. #include
    # E$ |6 x# p! {4 U& \! m0 g7 r* x
  5. #include
    1 Z( O: q7 q* |7 O$ e* }' P* I  {
  6. #include# S; I4 y' i' a1 E- ~4 e. u! m! u
  7. #include1 e+ C$ K. V3 \" Z, b# N3 ^
  8. #include
复制代码

) R" ^* |2 @" I2 N. p3 x7 S0 a4 f; S1 w( B6 k

" @- N- b9 ?' X) O3 g

( L% i; W" }! I3 M6 ^9 S, B' P. |( E9 c
; k! b, r) v/ w; V) g/ V+ X8 q
1 z+ V% W3 B4 [1 c& \
* Y, _% d- P7 u" R* h

( I/ d# o1 @( C. q+ \' z  O( T
5 X9 q7 H: l% o  a: |5 H
' j' \1 u3 ~+ }6 Y( Q9 Q
. a/ ^# ?) l4 p' V1 }9 o
# w1 r: o2 A% q* ?: O* X
, y& S% ?& ~3 c& U* J
' Y8 Y- X$ F- D) ?4 N
* \0 J, a4 n* i% l6 a! @

4 A( E  Y; u8 N4 g+ g% m) @4 t
$ B9 V' C9 M" f$ L% w& P

3 x. s" Y/ k7 a% H% m0 [6 V/ a, K

+ }* {7 g9 b0 c0 Z/ P2 V, D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
( ?2 _4 L( a4 h: t! d3 L' u( z#include <sys/types.h> 
: c" _$ S5 M; p8 `8 |5 ^5 }2 h( Y* n#include <sys/socket.h> 
! c. k8 C; {; s0 O# i/ ~, p#include <unistd.h> 3 }. H; `" v' Q: Y3 O: H/ K
#include <netinet/in.h> " B! X9 e) d3 _/ w. s1 h6 R
#include <arpa/inet.h> 5 J$ r- u9 O+ K5 ]$ s+ [
#include <string.h> ; t' G( `- K- d+ l( P
#include <stdio.h>  3 Z' H7 i5 G4 v* d' O. Y/ \
int main() {6 J$ f4 F: Z" x
        int sockClient;. D/ t" X  W  l/ d4 k% G
        struct sockaddr_in addrSrv;
- A" ]5 N' b; I) E        sockClient = socket(AF_INET,SOCK_DGRAM,0);  K! r# {% X$ L7 d) |% }
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");8 {* W5 F( h  ~8 x( ?0 G
        addrSrv.sin_family=AF_INET;! ^1 ~, |/ g' `4 u  p$ m
        addrSrv.sin_port=htons(6000);& [  q/ x2 R4 T+ l
        while(1)$ B' i  }0 o; ]' {! a+ @9 `; c. G! E7 I
        {) n7 V4 \1 z, _/ Q
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
* g* c2 F& y5 ~) c, i5 a2 N2 @" x                sleep(2);
, O+ Z$ v3 P* ~# z        }    
0 n/ x5 O. O0 |% z( H; G) @. N        close(sockClient);  
  F2 I% i4 [/ d. _3 K9 |        return 0; 
0 w( l4 j5 o. L+ U}$ o# p  s$ i" D8 y

0 V! I+ n+ N, R
; l- M  v7 e% X4 `# Z# m$ D4 W客户端:
  1. #include <stdio.h> 
    , Q7 {2 |) K0 b- v
  2. #include <sys/types.h> 6 n# M' |! u& N2 l
  3. #include <sys/socket.h> 
    ! t; U! Z( D- u' d8 W- k' X( E6 s
  4. #include <netinet/in.h> 0 M* E: M3 Z7 V4 o$ C" E$ W
  5. #include <arpa/inet.h> : ]# l, v* O3 M  x5 `
  6. #include <string.h> $ t/ r7 B7 e* N! n2 `
  7. #include <unistd.h> 7 W% p5 Y; L# _7 \2 B; ]
  8. #include <fcntl.h> % G+ c- {, j6 p/ T1 _* U
  9. #include <sys/time.h> 8 X& o& ?8 c6 Z# R9 U( h6 W
  10. #include <sys/select.h> 
    # x4 y' t; ~! d  d1 F" U" F
  11. #include <sys/ioctl.h>  4 @7 U/ K" a9 M0 ^7 q4 v
  12. int main() {& ^3 a8 T1 ?* k& p. n4 A
  13.         int sockSrv;% K2 O5 |. ]8 |0 S
  14.         struct sockaddr_in addrSrv;
    & k& z+ f3 }" |# @" ^" ]
  15.         int len;
    ) S5 ]/ [8 d+ ^# _1 C2 Q
  16.         char recvBuf[100];3 p( Z; j' A3 K2 Q
  17.         scanf("%s",recvBuf);
    3 H9 E4 R4 W( a& o
  18.         struct sockaddr_in addrClient;
    4 C! C: N" x, i# j1 ?
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);+ ?4 i" a. J! f- ^- Y$ v
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    * u: A& Z. d7 T) I  K; l$ t: T
  21.         addrSrv.sin_family = AF_INET;
    8 F5 D1 g. w. e/ [# p
  22.         addrSrv.sin_port = htons(6000);! R) @3 a+ a' K7 A
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    3 W" m$ c9 o3 h0 a4 n3 f% J/ {0 o9 }
  24.         len = sizeof(struct sockaddr);
    / j2 G3 b) Y  e. z6 j# B7 \1 G
  25.         memset(recvBuf, 0, 100);  a9 f& N) J* r) ~
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);' g& F+ T& d5 s: }$ k# b* B
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    1 Z# N9 E9 |) J" s8 N1 G+ Z
  28.         printf("Client data is:%s\n",recvBuf);6 U6 [  W5 P) m/ I: m7 P% e
  29.         close(sockSrv);
    6 y+ B! F1 d0 L2 X
  30.         return 0;
    8 g1 s) u7 }" g! C! ?8 T( }; L
  31. } 
复制代码
2 |! z$ l2 w0 A! v& r5 q

# u9 [5 G( j. {1 a
& M  w- o/ }3 S3 Q) B  f% P2 x  P; A# q
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-4 10:45 , Processed in 0.057083 second(s), 18 queries .

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