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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:8 W# g& r0 R, `0 M  p7 b# s
  1. #include
    0 Z* A# S: |3 a6 [8 p1 F4 @
  2. #include
    + G, u+ J) D+ o- A* r; c3 U
  3. #include9 R2 V7 g) r0 W' }4 ]/ X: F4 U
  4. #include5 m- N! Z0 [  V. @5 v9 j) v' _
  5. #include$ r# k- L: `' F9 i
  6. #include
    # V+ g6 A. i4 M5 S$ X
  7. #include: `: F$ G. G5 q( F* T
  8. #include
复制代码

3 j5 _8 r) M/ T7 G/ h7 B$ @. I( N5 b" N' z' e- @& z$ \
服务器代码如下:
* Q/ C' N, L( g( h1 }, l% S
  1. #include
    - q8 m+ S, [" u; F: D
  2. #include/ k  X, a# {  _! I$ p) e
  3. #include
    0 s7 g$ z/ ?1 P& V& ?0 W
  4. #include
    . ?: x$ J8 z* S9 K9 L4 r
  5. #include
    / D3 S7 {5 g( X- D9 a6 w2 c
  6. #include
    * D1 C4 W- T& t/ \( y3 ]6 d
  7. #include* q  F& Y/ O# O7 a
  8. #include
复制代码
4 \0 P3 Y5 J( _! e- y
1 X3 K9 i3 U7 D4 J1 I0 x8 _2 Z
$ o5 }# j' M8 Z

) z& J0 k2 t- }! g, b/ S
$ J4 z, ?( r: Y0 H, i
; S8 J0 i4 ^7 w
* T9 d' l3 n( b8 A/ v
( D" z9 i9 D2 [$ H; D

: k6 r) }$ \# b" ^. }- f
% b. K8 k4 d6 Q/ |2 S' Y
: ^. b: Z$ ]  Z, C$ }+ G* y3 t

. f- q" U/ r3 u
2 O1 `- b: e; l+ F& Y
# i5 {( j1 w! ]: A' {# ?. _8 t
- Q  ]+ U5 ]0 J# r
$ \* M; H' T* d$ E: T
' X  W' m2 v( K/ `, n* D

! {, i1 V' I( Z7 P9 ^
( s  k% r9 `5 \/ s3 n
" u+ U- B8 B" A& O4 @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:: T2 {) }: _5 _( J3 M
#include <sys/types.h> 
( b+ f1 a" [  c1 z7 v, }# A#include <sys/socket.h> 7 o; E2 m7 t) b+ y) S. g% ~
#include <unistd.h> 
  T6 t* K: H$ ?1 K: }#include <netinet/in.h> 
  ~# |! J! Z" o#include <arpa/inet.h> : O( G9 u* N- R" j! g- r2 B  S
#include <string.h> 
2 \" R8 d0 c" d1 [* [$ g; n* D#include <stdio.h>  
  r, i3 b! V! v, T- b- b" U/ Oint main() {
5 s# \4 e- W% u' ?: L        int sockClient;
5 l' `/ l( s6 V: K7 s# `$ C' p" C        struct sockaddr_in addrSrv;
$ |1 Y* D! X0 H9 W4 y        sockClient = socket(AF_INET,SOCK_DGRAM,0);
" ~. g% N% b. K7 @( p; N5 x- `        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
- Y0 V0 e5 x; H+ ]& ]9 ?5 a1 w; u! }        addrSrv.sin_family=AF_INET;
4 I/ d' ?- q# n8 v4 G0 O        addrSrv.sin_port=htons(6000);7 q4 |5 t% U# c( ^8 M
        while(1)+ e9 s. O2 M4 b6 `8 X/ Y) q
        {
5 d' c- f- e+ j( A( g                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
: D. x; M7 ^+ V4 V* p! F                sleep(2);
( y: c$ Z3 u+ L        }    $ x$ g  T' y# H4 n
        close(sockClient);  
7 J- z; n& U1 f& H$ K5 d        return 0; 
/ U1 q/ G0 V' D% y- N* g$ A}
( u- G' U( e( d# c" t" Z" n9 Z5 z/ c
3 `9 C$ l1 s+ G% v) S. u/ k5 Z
客户端:
  1. #include <stdio.h> 
    $ ^$ \' {2 X, n  A, p- \* z! d$ U
  2. #include <sys/types.h> 
    0 Q0 A7 V2 H' u) N- _6 x! M$ T3 w
  3. #include <sys/socket.h> ( z2 A* s/ z3 \  m; ^
  4. #include <netinet/in.h> & D7 B9 \- W+ U, V+ B
  5. #include <arpa/inet.h> 
    ' L4 n; E, Q, e$ @8 Z& ~3 C; W
  6. #include <string.h> 
    * M5 D" c/ k" h( `( c: g  ]
  7. #include <unistd.h> ; J8 Q$ q3 e( v% u
  8. #include <fcntl.h> 
    + R' o: g6 r) D: }; A1 N2 b! j1 R
  9. #include <sys/time.h> & w; Y7 K4 J+ a
  10. #include <sys/select.h> 
    ( Z3 _- A% e$ R; v2 k' b8 q0 \
  11. #include <sys/ioctl.h>  
    ' E/ v/ z- n9 V7 _
  12. int main() {+ y0 o* s4 O! V8 Y# @
  13.         int sockSrv;) ?* I, C- ^+ H, _
  14.         struct sockaddr_in addrSrv;
    : x0 T. ^; S9 K9 c
  15.         int len;
    ( F& D$ }  v5 M# \
  16.         char recvBuf[100];
    1 ]; b- u# i0 j6 f1 `+ j; g
  17.         scanf("%s",recvBuf);9 `; l; h1 g5 {
  18.         struct sockaddr_in addrClient;) w$ `3 [9 S7 A
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ) Y! D! h! }/ {( z) G! `  A& A7 u( D
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);2 O8 W6 G' g- n" H& p
  21.         addrSrv.sin_family = AF_INET;9 [1 p8 ]% j3 N4 u2 D! T
  22.         addrSrv.sin_port = htons(6000);% }$ Q0 Y2 {$ ]9 m1 t6 H# g: w
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));$ W1 k( R2 w# }+ w
  24.         len = sizeof(struct sockaddr);
    . y0 Y+ [; u& _
  25.         memset(recvBuf, 0, 100);  Y/ [" S2 G9 [8 ^) M6 M& @6 o
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);8 I0 w* j. r5 }- ?7 f8 W& s1 \& S% M
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));2 |+ v5 _' ^* f0 }5 z7 \
  28.         printf("Client data is:%s\n",recvBuf);
    ! j4 y+ L! ]4 g- H
  29.         close(sockSrv);. v( o! o3 u/ f5 a6 g$ X* h2 U# a
  30.         return 0;% j9 l% L" J( U; l
  31. } 
复制代码

( J) E8 `% [' A& e* O
4 G! {% o9 p: x4 B* p( g$ L* z1 z% k4 L% {- V! \' n0 B, ^

. l. o" b/ r3 k
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 14:31 , Processed in 0.047997 second(s), 18 queries .

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