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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:) l4 }) q- l" d) @
  1. #include& L& o5 z+ X6 t( c. W& p
  2. #include% j6 C7 I( |: A; z4 N2 S$ H
  3. #include
    7 {: Q3 Y2 m! Y
  4. #include& p3 l/ |* ~9 {2 q
  5. #include, s& q2 d: a  X, G3 E2 V2 ~/ F
  6. #include
    " g0 H% q2 {/ r" l% K- Z9 j9 y9 m
  7. #include( g$ c% K! B  X/ N. h1 Q
  8. #include
复制代码

; D" Q! l  V% h9 B; B& n3 ~: T3 k/ x0 h- G5 Y) g
服务器代码如下:' Q1 B( K4 X+ D/ M
  1. #include  ?. |! [0 o: x2 T" X: q' j
  2. #include
    1 T2 I: d1 ~; F% r% u* @2 W3 X9 ^
  3. #include
    % w* ?' r$ Z- V# d9 z0 X
  4. #include
    9 x6 _/ O- {5 W/ _% e) Z
  5. #include* l) I" Q& V+ g6 x0 G1 }
  6. #include
    # I+ Y2 O. \% ^
  7. #include
    $ q: e9 k% D$ v( e4 n
  8. #include
复制代码

' R) J( G0 S2 v6 r5 x3 J
' R# y2 v2 Z6 Y( R( D8 ]4 v3 y$ B7 q" q

! v. p$ Y" m, W8 \% h+ ]
3 B1 H6 _2 o2 x. }# g4 \
0 E9 v: O. v( ?9 A5 f
$ N/ F+ h* {# ?7 u. S

% U8 l1 K0 k" L' a& @
( f5 r+ @/ L# W. O# f
1 P2 Z4 d( W" j1 v6 h& o

# p2 l- L  ^- T) D1 W% h6 J8 C
/ Y6 m. g) a  j9 C' Z2 B9 w

4 J6 A5 N2 s. }9 X" B7 Z* R
- b0 [, C( V0 O& M: P# ^
; ~& J2 {! S5 f! M, k8 \
% h$ B0 x3 ~5 ~+ J( U
' l) K5 O  l/ Z

) O% b0 K/ |4 K. ?6 J: f9 O
( t4 k6 }7 H" F2 X
  @4 A3 c& ~1 n& }1 J* b& [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:+ z2 y8 ?$ t' \; L; {' \# B; c
#include <sys/types.h> 
. `8 }" Q' R6 @2 A  a#include <sys/socket.h> * a7 I; H9 n4 X* y  `
#include <unistd.h> $ N9 S& k/ u) P5 h
#include <netinet/in.h> , L2 ?% I4 c+ k7 p
#include <arpa/inet.h> 
/ W) U- {0 M! v+ _" t, ?" ~#include <string.h> 
( k6 s) E0 P0 T( {#include <stdio.h>  " g0 g- N. L6 z
int main() {
% ~5 s6 ]1 u% o! F        int sockClient;
- u! p: p7 \7 n        struct sockaddr_in addrSrv;! |% k( k+ V6 |7 ]- s  {
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
# |9 h7 \6 ~# y1 X0 X+ Y        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
) k* q: a: E5 q; ~; s+ e        addrSrv.sin_family=AF_INET;
" |1 m- B1 z) m( e0 E& M        addrSrv.sin_port=htons(6000);
0 z2 ~9 C' b9 I' t        while(1)/ e5 a" \* A9 k1 t& |+ c( q
        {
2 b& X; h+ T, q) y6 G5 |& \1 z, m                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
$ s0 g. c$ \( o; Z                sleep(2);. p& [9 w) I' J6 H  ]) i& k# f" o
        }    
( t- m; N) S$ c, \# y        close(sockClient);  
6 s3 M% E7 _8 `- ?% W) @6 R& S        return 0; , ?" f# j$ S' B. M1 G3 k0 z7 L
}
' P1 k/ W2 W; q; L: }0 G7 h) s# v0 |" ~" N7 m

# a/ d) e3 d) l) z' @; u7 l2 f- f客户端:
  1. #include <stdio.h> . F$ L7 T. \/ E, k- R4 G
  2. #include <sys/types.h> 
    # F$ v- M& ^8 m1 H
  3. #include <sys/socket.h> 
    1 t( `9 x3 y/ q8 @& n' |2 H
  4. #include <netinet/in.h> 
    9 ~' ?2 S# S# c* ]9 x
  5. #include <arpa/inet.h> 
    $ J  {6 ~8 b( Z# t. {
  6. #include <string.h> 2 ~/ G$ E" T" [7 l& [
  7. #include <unistd.h> + n/ C: `) j0 [- a
  8. #include <fcntl.h> $ e4 w& S% A' ]! T8 i2 l
  9. #include <sys/time.h> ( G" j9 ]1 r1 H$ [8 J$ S& r* Q
  10. #include <sys/select.h> 5 e* h- g5 ~: L. O: F" Z
  11. #include <sys/ioctl.h>    S9 n2 M( T0 [. I: Y2 J
  12. int main() {
    6 u: C0 J8 g/ ?! G$ c1 P5 C' ]
  13.         int sockSrv;1 c4 r+ {, j, g8 l, N7 i- ~5 D( @
  14.         struct sockaddr_in addrSrv;
    1 k, F+ E( W( r% q& ^9 Y! t  d
  15.         int len;$ F) O% _) R/ F- y2 O2 M
  16.         char recvBuf[100];; H7 z# w6 u- a) ]. h1 Q* A
  17.         scanf("%s",recvBuf);
      [' O  J7 Z5 z" w
  18.         struct sockaddr_in addrClient;, E: `$ x, H+ w1 s1 e, m5 N
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ! H% w4 J9 Y/ @$ v, _
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);- V4 u4 ^! `8 W: }! \
  21.         addrSrv.sin_family = AF_INET;
    ) X) `& s0 D$ K" }. t6 I. Y' M
  22.         addrSrv.sin_port = htons(6000);
    - c; v1 \& D, a" x0 H
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));5 X! P. _6 I4 _& P. j- a5 c
  24.         len = sizeof(struct sockaddr);
    " J0 \, z9 D8 C' h3 |0 b9 w& [
  25.         memset(recvBuf, 0, 100);
    4 P4 Y. J) `1 x- g
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);" S; @, i9 z* r) c, _# _
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    ; x3 `6 e/ a  g5 w. F2 C! R
  28.         printf("Client data is:%s\n",recvBuf);9 [1 i% L( |% h
  29.         close(sockSrv);1 L9 o" E) E- f. ?, w
  30.         return 0;& W* e( O! J6 P$ P0 H6 Z) r
  31. } 
复制代码

  B5 k2 p: E4 I. k9 \' B4 Z: w
3 ~, v: R/ r( |2 n' h8 @" s% d& ^' b/ a
2 F* i& C+ b0 n8 |: Z: q; N" h
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-4 13:00 , Processed in 0.058991 second(s), 18 queries .

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