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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
8 T% W2 `# v" R- f. k
  1. #include
    6 `+ k2 M7 K9 F1 a9 Z+ C1 z+ c
  2. #include, n$ @& g; M/ Q) \) X0 v" m
  3. #include
    & m  c  i2 ?# w; j5 M6 x
  4. #include
    ( h: R- R: ^, r1 d6 y
  5. #include/ {: a8 M2 J6 I- N- o: m, {3 [6 _. W
  6. #include
    . l5 Z+ s- M# ^  R. S
  7. #include) p- A2 h$ e- |! k
  8. #include
复制代码
& {8 N% o5 A# G5 h

2 @5 X! b, J0 }( W) o服务器代码如下:6 U! Z. }0 I1 [$ r' a
  1. #include
    2 r' C/ S5 B# D/ Q5 X$ h
  2. #include
    ; q2 G, W  o9 ?$ [7 y, P% g7 ~; m
  3. #include) X7 S3 G. d" o8 }: d+ v
  4. #include
    ! n7 W' s2 _) e. D8 Y; e$ h
  5. #include& l3 r2 [, R8 S5 e; S
  6. #include' P1 G5 a" P3 X, K4 r+ b
  7. #include
    ) E  J& z" B( u% B3 @6 J
  8. #include
复制代码
% T7 F! T7 c5 h( b) P: e* H
7 @' \  Y; Y0 }: z8 B/ h

7 I4 s: o: Q: s! o/ K

" E2 K2 x+ R+ q* h1 Z) e0 \9 a( h+ D% a% S& [) o# Z( K$ V) w4 k

# _  Z' J  s. `# Q8 P0 d8 q/ @. m* k7 u5 r% E/ v

; p4 _: V4 ^2 \! Y; A$ J2 R- @; y7 o8 y3 X: m- L
& I+ r; y. q- z
) y+ l; m8 _7 s

5 q% X* O! u0 q" @! [" P0 N; A: L! t/ E0 t6 G+ `. |7 ^( j4 ]7 c5 t3 L" u, O
3 a- _( v& [( T9 s+ U, O" b' c7 p

* W$ ?6 \. Q! r5 i5 I
, E: [  Y6 u4 |4 t$ p( z* Q
1 S( `4 n6 B! Y

( j, Q9 K( M+ E- c5 H$ o
6 z) i) C. Q  B0 m* x

$ g: m; a7 ~; p' y, x7 R/ F1 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
' z+ O! w/ \/ \/ E6 x1 Z* `#include <sys/types.h> 
; Z( E) j2 |8 x$ |- H#include <sys/socket.h> ! e$ W% d. R/ n2 L
#include <unistd.h> 
7 r" x: l6 J/ R) D& `$ U. f#include <netinet/in.h> 
$ F5 X3 n! z7 ]( X4 F  z: y#include <arpa/inet.h> ! z; z3 v- U0 k6 {6 ?4 Y
#include <string.h> 
4 E( P* e5 w5 K1 Y6 }#include <stdio.h>  
0 n- {3 u9 g! T: z) B# t# \# E* e& z3 dint main() {
6 \. i5 |7 \; V        int sockClient;
& v% y% F5 c1 C( K# i        struct sockaddr_in addrSrv;/ _# G! i+ ^. D9 D
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
& C7 n7 w$ ?" K, h        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
% Y9 p" R0 Z0 j0 o" ~        addrSrv.sin_family=AF_INET;
/ o; K- E/ w9 [        addrSrv.sin_port=htons(6000);
9 m5 U* x! z* Z1 Q5 m/ K7 z        while(1)7 p; G9 z6 l3 C) c2 _
        {9 b' z# D( C/ u1 T! J. q: C  k
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));: j) Z  {! A( @  J7 `! A6 Y
                sleep(2);
8 B) O. E( _6 m$ P5 U        }    
/ u, _6 @9 N* O) _        close(sockClient);  ( Z7 [* f. d8 K5 j1 h; t( V8 D
        return 0; # p' q  }% X" r* G5 K# E
}
4 U) i) m9 c7 U6 Z* c; h/ p
6 z& v4 A( [; c! J: I* N& l7 I
客户端:
  1. #include <stdio.h> 
    5 R1 Y/ o/ Q4 B
  2. #include <sys/types.h> : @- q; S& F; K
  3. #include <sys/socket.h> ( Z1 e3 {  N' ?: |+ s/ z
  4. #include <netinet/in.h> - q! g7 w8 ]: K3 S* F
  5. #include <arpa/inet.h> ; f5 `2 j4 ^1 x
  6. #include <string.h> ) l2 W0 h" \& W( y5 K
  7. #include <unistd.h> * r% {* x: e$ u( J3 [8 L* j! Z
  8. #include <fcntl.h> 
      ~: ~: _* Y# _' t+ X
  9. #include <sys/time.h> % _% `7 J" s, l0 Q3 V7 n
  10. #include <sys/select.h> % t/ j- z  T# t' N; {/ {
  11. #include <sys/ioctl.h>  
    0 z3 `3 \- a( Z
  12. int main() {
      `9 h( ~' z) h1 Y
  13.         int sockSrv;
    4 v' f) B3 L5 L' {/ u' C
  14.         struct sockaddr_in addrSrv;# v8 b! H% M% G4 S' S8 Y% F
  15.         int len;& a" E: O/ H6 i+ h
  16.         char recvBuf[100];
    0 i7 B8 c* r$ o3 T% N
  17.         scanf("%s",recvBuf);
    9 n+ [& q7 w  L* a% @; R
  18.         struct sockaddr_in addrClient;
    + \$ l6 i- u( b* A
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    9 c) i6 k  ]* i' j: G7 _3 I
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    * Y/ Z) u6 m# d+ d
  21.         addrSrv.sin_family = AF_INET;
    1 F+ |) t- f8 A8 C% k9 Z& q
  22.         addrSrv.sin_port = htons(6000);
    , i! K1 o' ^+ g  z, w8 w% W
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));, E9 a% F/ k3 L6 C; H
  24.         len = sizeof(struct sockaddr);, c) K, G1 A- Y
  25.         memset(recvBuf, 0, 100);+ F  A, H4 H4 E' m. _
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    % l6 q& @$ _) |5 v* W9 @0 v6 X6 G
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));3 n) |( N; |; A& ^/ {
  28.         printf("Client data is:%s\n",recvBuf);& z- \2 `4 h2 g8 j
  29.         close(sockSrv);
    : e4 ?' X2 V8 Q, h+ g
  30.         return 0;- i' p, S) s0 @+ ]$ R+ C: T! L
  31. } 
复制代码

5 E9 ~: k$ V! h
) \- K* {# c: _. ^" t" E/ A1 k. I) i

( D( U5 b9 t/ D! U, l0 k
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-6-18 20:53 , Processed in 0.104838 second(s), 19 queries .

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