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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:; ?& Z' \6 t8 ?/ q
  1. #include* v3 o' g  r8 d( p! f" d& a( @  x
  2. #include
    9 F/ f5 i  ]+ P( {" C4 n
  3. #include
    " R* k& L& P) ^6 t0 i) f
  4. #include
    " j9 J3 ?6 n/ x; c" m& w: z; o
  5. #include! {1 m# n6 c% x5 B
  6. #include6 w! r. t, z$ y! {' C# @" P
  7. #include
    * j; m! U3 g+ b) X
  8. #include
复制代码
3 R$ e9 k! K" ^; ~1 [

4 F7 T3 P+ j/ F* j服务器代码如下:3 k/ z: b2 k$ I, ]2 ?% S
  1. #include/ U% v# F6 x3 L. o
  2. #include
    ( i, z* E$ a6 g' S1 k# [  N
  3. #include% @+ O" z) B* r+ ~1 V0 i7 V/ ]
  4. #include+ o8 ?. r3 ^; Z  M! ^
  5. #include! s* y& y8 X6 N, \
  6. #include: D" p$ {5 h1 j2 O1 q
  7. #include0 z- s2 l" r# k1 ^* w3 H/ T( @, A
  8. #include
复制代码
" R( l% M1 G3 M, Y' y

" `, |8 u" C" P+ R$ P& J, \* |( A; m# P
$ i0 |) C8 h4 n' `5 R1 u
& [" J8 a  ?3 p

; v  U! o/ s! w7 d( r
- g8 H3 g4 ^8 A$ v# z* z

+ Z- m0 t  w+ c
. r: N4 y1 s9 U; d: y% q$ x
8 M) S8 O: l& `1 w# e: Z, R. a8 @
0 D- ^. e: ^) s$ ^2 a0 C+ D0 o2 k

$ Z/ u; _; j. Y0 U2 ^, T5 N% S5 v2 k0 \! `

5 b- `2 \2 l" W# i% e
; c% {1 x4 m: A8 L
4 X8 q" k, s4 d3 j" e, t
: {- Q6 W9 J. v. n
( G5 `) R5 l6 j0 h' D/ y

7 F: K4 l& S8 Q7 C9 N. s/ z/ l

6 d! ?; h5 O& U4 X9 F) x" c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:  M% k5 ^# L4 a* G8 Y4 S& c
#include <sys/types.h> + j5 j* ~3 D5 h) g  [9 @
#include <sys/socket.h> 
/ y& v# o5 T  P. m) W#include <unistd.h> 
# a  e" i- z9 _* O+ u#include <netinet/in.h> 0 _  X9 S" _, s0 g* N0 t8 A- Z+ @" B
#include <arpa/inet.h> 
/ ?* o0 r/ P9 D6 a3 B1 M* @; C/ {! R#include <string.h> 
9 f. t7 r& u+ Y4 l$ j1 O#include <stdio.h>  ' s$ @4 T2 @6 ?6 `# b3 u
int main() {% Y5 s  a7 R; Z1 z. e
        int sockClient;* A* A8 W) e  J* ]+ N: S; a9 D7 a
        struct sockaddr_in addrSrv;; b* ~2 q! I# e1 F$ L9 h9 I7 c, X
        sockClient = socket(AF_INET,SOCK_DGRAM,0);9 b) R/ I( B1 ?5 f$ U# c9 E
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
- a; H  V! r% _5 ?) f/ h6 Z& }        addrSrv.sin_family=AF_INET;( ]& y  d  X( |: y& j
        addrSrv.sin_port=htons(6000);
2 u2 L! J: b: e% @        while(1)
9 R1 }1 k$ K. ]        {1 N- D) {+ |1 D, u" [' W
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));% e0 h8 U' ]1 L' S! Y- n+ c; N5 N
                sleep(2);
. j0 ~7 T2 s" ?- E        }    $ b$ ?9 Y$ z0 T) J' |' N$ m3 D
        close(sockClient);  # F8 n+ e& j  ?( v
        return 0; + l* D% r8 ^9 t% o
}7 R+ ~" E7 _1 V% R
& k$ q. v7 Q8 L0 \9 p" u5 N8 L4 r
% ], H% ]1 \# S
客户端:
  1. #include <stdio.h> 
    . W3 {( r2 T; R3 n) ~2 f- `9 K
  2. #include <sys/types.h> 
    % ?) d+ A% Z/ _& D& n8 z  Y
  3. #include <sys/socket.h> 
    ( v& I) [# W& X; N. @+ V5 o- c
  4. #include <netinet/in.h> " G) l9 v8 e. c" c3 W9 b
  5. #include <arpa/inet.h> 
      B  N* T% H! b: l9 N& X1 i* H
  6. #include <string.h> ( S* R: ]6 W% M& o) L' l) z& M
  7. #include <unistd.h> ! J! ~* ?" ^0 Y
  8. #include <fcntl.h> # @8 J' O' e0 M! T
  9. #include <sys/time.h> 
    7 ]& R8 h4 h' f! t1 s& k
  10. #include <sys/select.h> 
    * q7 p! P" p4 b! P" z' d5 G
  11. #include <sys/ioctl.h>  $ P6 o- m+ n2 @7 w
  12. int main() {' _7 P3 l" A! N; g# f3 M  a
  13.         int sockSrv;5 t  x2 c. ^0 j7 P
  14.         struct sockaddr_in addrSrv;
    2 U4 N; v' S5 q5 s, C
  15.         int len;
    4 e0 L3 m0 m1 J6 a! e/ j
  16.         char recvBuf[100];
    3 U$ H( @" {9 }1 |' y( v7 T5 m) ?# F
  17.         scanf("%s",recvBuf);2 A3 d3 l( }8 o4 H' L
  18.         struct sockaddr_in addrClient;9 p) X2 \' j6 C9 S) J! T
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
      I, x* m* R- v1 |% V0 [
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);* ~8 V( \# g: ^9 ~" A
  21.         addrSrv.sin_family = AF_INET;
    , m0 r) x/ N: A  ?# |. G
  22.         addrSrv.sin_port = htons(6000);( e! c# q! G) C! O
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    4 P0 u0 Z. K5 s9 O& o( H
  24.         len = sizeof(struct sockaddr);. I. r. y" t0 N' p; p1 f/ i
  25.         memset(recvBuf, 0, 100);
    ! k/ E9 I+ \! |: i1 _! G8 i
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    & [" A3 i. u8 F9 c8 _1 L* r
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    & {  C& T* X7 [$ b/ w8 J' `
  28.         printf("Client data is:%s\n",recvBuf);
      R' \. k+ n( [: r( _
  29.         close(sockSrv);
    ! ?- o! c9 d) J( o4 m# e4 i$ v. i
  30.         return 0;
    $ d& v6 D) O+ k  E' Q- R+ k
  31. } 
复制代码

! Z/ h6 H, w2 F* H: p1 N
4 z$ d' R  _" o. `( L
0 H) y3 n+ q) a
& f" S  {- S: K: B( e% Z+ {! o+ K2 d
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 12:22 , Processed in 0.104294 second(s), 20 queries .

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