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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:# o, l3 ~' m8 [' [4 n
  1. #include. L: t' r* U$ a0 U
  2. #include$ I' Z' B2 [( ?, a) _9 L7 w
  3. #include5 ?1 d1 N3 a6 H' E! c" ~5 B
  4. #include0 z  V% j, j  i# j1 x( I1 p
  5. #include  Y% I8 b" t& I: D
  6. #include+ g' j8 {) @, E4 ~) i  y
  7. #include
    4 G2 A. I- A2 c  v) p
  8. #include
复制代码

. [! Z- Q! H7 [- j' U0 K+ ^0 A' {# S% f' X; N. d( @+ k
服务器代码如下:# N- }( d5 n5 h  j- S
  1. #include* ~, r* ?3 A& l
  2. #include3 Q0 n( }$ K/ p1 k6 @3 F- j/ M
  3. #include
    + n+ A. S& C8 H$ d" I( O9 n
  4. #include
      J9 Z/ u; |3 i& Q3 i, |
  5. #include+ t4 P; ^3 F% u
  6. #include* L5 E; q- d8 n
  7. #include
    : Z& N$ N7 a, W( H' U' C; z5 L0 b
  8. #include
复制代码
! {) _0 Z  @1 `( j+ G; s6 M
$ Y$ H. J" N5 K; N; |9 o
0 ]7 D# g# l( L: ~- E
! m( t1 I2 ?/ g# O

: Z) \5 S7 u5 h; ~
$ H' U6 R! ^) D- M

- @' U% D, v5 c% V
; @: t+ P0 c: {5 N/ L: n
! u4 s) t3 q, u0 M, V
( |8 E7 F2 e- Y3 j- {

% O; d! q. @: V+ l4 A" l# g% z0 g  O! t

" B4 Z$ S7 c8 h$ Y/ r+ ?9 s8 }# d6 Y; [7 u# J
+ n; N& y& g* ]" Y% t
" n" ]2 s! t8 _" C' _

$ a) E8 C" I9 N% D' |5 f% ~

1 N9 s) Y0 V) r  F; n+ y9 }
% i/ o& r+ \. l3 m  O

$ S0 g" O9 e6 G/ I; T' |2 E! p. X- S- {2 Y& q, C

* I6 m- W5 e+ |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
5 {* T, |) l9 f3 a" ]#include <sys/types.h> 
  K- J2 O3 p- o#include <sys/socket.h> 9 R/ v: O5 D! O$ n( A. o1 d
#include <unistd.h> 9 D/ q5 ~: ?) w# R0 S0 Y1 j( \. N
#include <netinet/in.h> * n- N" K: S( j) N* i  n+ Y
#include <arpa/inet.h> + _' [4 Y% A2 g/ p: m6 M% h
#include <string.h> ! S5 e: `4 X+ N  \# o1 s/ G% m
#include <stdio.h>  
2 y- \( v6 n- h2 p- x3 y; X; vint main() {
, f/ e$ _, B" G        int sockClient;
' z# K7 R, j( ]# B; ~        struct sockaddr_in addrSrv;
$ C$ j) [0 B0 W) P4 o) }0 @$ n        sockClient = socket(AF_INET,SOCK_DGRAM,0);1 W9 K; M( k/ Q
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
) `6 q# s6 H  V3 |- }4 e/ [4 p  b        addrSrv.sin_family=AF_INET;, Y- N9 h( k6 |" K' ]; N
        addrSrv.sin_port=htons(6000);
1 {5 U& v" ]( p# ]& I3 w' [# |        while(1)
0 g7 O, j! x' `; @6 N# X1 P0 ]        {( _0 x% m- v5 D" S  l" U  L
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));9 c/ J! }7 b5 J1 c
                sleep(2);; F0 o% Z. P7 C$ s2 E2 `+ I9 }
        }    " T" ?; p. Q0 k8 I- C  C. P2 s7 F
        close(sockClient);  
$ t" N1 f  k% k/ ?; q- {4 r        return 0; 2 a4 B* f0 }. ^
}& n4 S, h  b0 B- ?

/ I; ]- i2 }& e) A
1 I* f6 m' y' D  Z4 C) T& X客户端:
  1. #include <stdio.h> ) c" P8 {3 U" f/ K: |( F2 I
  2. #include <sys/types.h> ; b: t+ n3 m/ O( u5 V/ D5 e% d! K
  3. #include <sys/socket.h> , B$ E" F* t0 q( _' c, g
  4. #include <netinet/in.h> 7 B& ~+ U6 G& y! l2 R+ f, @
  5. #include <arpa/inet.h> 
    ) K" K# V& k; d! y+ _& J" ^$ V1 @
  6. #include <string.h> 
    2 q1 m! Z" Y; m& h( W
  7. #include <unistd.h> 
    ' x6 D$ W7 S/ J* j5 J8 a2 U/ w' W
  8. #include <fcntl.h> 
    ' _* J8 s& ~+ ^
  9. #include <sys/time.h> 
    # S3 q( m8 t; g$ N9 H8 v1 Y/ _8 g! x
  10. #include <sys/select.h> ) b% m4 r- P3 `- p' _" g* K" N
  11. #include <sys/ioctl.h>  
    ; J: c& ?5 h( ]5 y+ G% w* n: ]
  12. int main() {, P' f( R5 h6 s% ^9 U& k
  13.         int sockSrv;
    " R5 a8 l4 Y  d2 w  Q/ a  s
  14.         struct sockaddr_in addrSrv;% a. q6 n3 d" `- u3 J
  15.         int len;
    0 I* u' k1 s  |9 q) \
  16.         char recvBuf[100];3 z! u7 K# [1 J0 W
  17.         scanf("%s",recvBuf);2 ?8 A9 q- \" H
  18.         struct sockaddr_in addrClient;* S, k' G; \& V: O+ k
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);9 \% k8 l- N7 P* q' {' M& Q3 @) ~9 K
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);  K* Q" b! t9 h/ ]( P
  21.         addrSrv.sin_family = AF_INET;
    2 g! [' k4 m: w: T
  22.         addrSrv.sin_port = htons(6000);, ]0 o. n9 R& R  |+ k! j' T
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    * ]  k" _( B/ p0 D+ d% O$ t
  24.         len = sizeof(struct sockaddr);
    2 U( r+ @9 i  r' N  I9 [
  25.         memset(recvBuf, 0, 100);
    ' Q& I# R, r1 K7 ^
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);3 w; M9 T! d: T
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));$ ]) K# E1 b( e+ U5 r5 V; i
  28.         printf("Client data is:%s\n",recvBuf);
    8 S$ I; U& z6 h/ D8 {
  29.         close(sockSrv);3 O5 k; X) L3 x
  30.         return 0;( X' G$ h' e1 R  K
  31. } 
复制代码

; L3 e+ I- c* U2 h' `# V1 q4 g4 n8 O2 N& o% R) @
4 `, l7 b* W- k5 D- h
5 G6 Q8 C) i  d" \& j
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-16 18:13 , Processed in 0.056394 second(s), 19 queries .

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