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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:+ h1 k% K8 z) h
  1. #include5 F# {/ G1 M. n( T* E8 J' g
  2. #include
    " F; \5 c8 j3 o! Z% i
  3. #include$ _8 b' |( a5 l/ O3 h- C/ k
  4. #include6 g2 ~, {- b$ t* V; h  J& g, R+ ?
  5. #include
    ' c; D0 Q7 a6 ^# q
  6. #include! v* Z6 @, b) t
  7. #include8 w# [. Y: c2 n
  8. #include
复制代码
6 @0 x- r; g6 v! h* N7 \6 j0 o

5 @. R5 I4 D- W  R2 V5 {1 |7 O4 {- m5 {服务器代码如下:
, }# l, z1 h/ T
  1. #include
    & \1 O  X6 K/ K1 n
  2. #include  C1 }' l/ E( x9 A
  3. #include/ [$ G. }9 n* f) Q
  4. #include
    % P4 m) j0 v$ t. u; ^
  5. #include
    . X* J4 j: g9 t; R, x0 H# L# f/ r
  6. #include( H3 |: F  v/ s' n
  7. #include
    5 S4 R7 f+ }- q: y: d# _+ v
  8. #include
复制代码
: I1 ^: h- _% q. }
2 O4 V* ?. l1 C) y( R" O0 t
7 v' S3 [4 T1 X, _. i; R3 I# Y
1 w; t  X4 t: C

- h9 s+ I3 \9 _; P
$ y( [, W& r( e" a) X
: X% q$ u- n2 n0 q( t

" }" R) W$ Q6 V8 Q4 {* u0 e: A+ |* f( R2 L7 I2 T) G) {
& S0 ~( Y. V9 x8 o7 e! }
. B; N" E- |# i) _2 b
  m0 c4 a9 F; Z: o7 p

5 X3 U& I8 F, f$ [- B6 s2 i
) a- D" r8 y( F# U0 M  n

+ b. [% `8 ~; Y. k

. u8 m2 C2 d0 c3 e5 D+ U+ ^& R1 H4 r* s9 ~+ H; w/ B

" [% p! Y1 ^7 Z
+ }( B4 h6 @4 M- n
2 s& d5 \* C* \) N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:% b6 M& f" }1 e5 S7 k6 E
#include <sys/types.h> 
1 o5 ~' F. L8 k  v#include <sys/socket.h> # P0 k3 Y0 z. |$ @
#include <unistd.h> - }: T5 S& I' g8 S0 ~2 t$ i- I  J
#include <netinet/in.h> & P; m" m; {* X5 V( i' P
#include <arpa/inet.h> ! _& i7 F/ P6 {5 E/ C& P) x
#include <string.h> ; H1 o7 g+ }1 j9 Q& h
#include <stdio.h>  - N7 I, I. \. T0 x, D; E' ]
int main() {
. c% f7 \6 u% l9 ~! m& @        int sockClient;, y. z5 j0 b) e! ^4 n9 C" x
        struct sockaddr_in addrSrv;1 W/ E3 P2 k+ Y7 _' g& u
        sockClient = socket(AF_INET,SOCK_DGRAM,0);* h% I; l/ L8 \
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
# E7 [  r6 n* b! N& o& f2 a  J        addrSrv.sin_family=AF_INET;
  u& T4 S. H' Y, ]. H8 M8 r        addrSrv.sin_port=htons(6000);" {5 Q$ @) f+ n7 V6 ~- J" T1 d, i
        while(1)% R# N' P4 }  i4 U, V
        {
8 K- |3 Q  W# D1 H- W2 y                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
) d; i5 _6 S# l& Q                sleep(2);& t* b. s: a+ w, O  N
        }    
) C8 S% h3 Q0 r$ c: Y8 f) C        close(sockClient);  # k9 v# x# o8 E; Z% E* w) _
        return 0; 
' r7 b( G  @1 K& v( u3 V}
' @9 Y, u5 U& r' b7 I3 V! |  Z' z4 r% I4 y+ t  m# n7 F$ ^8 N) q

& a3 H3 x! [$ R$ g$ d, \. ~客户端:
  1. #include <stdio.h> 
    ; t$ l5 H$ j/ b' ^3 p/ x9 t/ @- v
  2. #include <sys/types.h>   O9 R( c- |/ |: M: `
  3. #include <sys/socket.h> 
    ( x# O3 ^! i+ I/ C0 a- j8 x. j) G9 V. V
  4. #include <netinet/in.h> % ^; o$ {8 G* w! o$ _2 o' E3 u5 B6 R
  5. #include <arpa/inet.h> 
    ) o9 K6 A7 U* e; Q
  6. #include <string.h> 
    8 f% v; ]9 `3 F% [
  7. #include <unistd.h> 1 y  p; G: ]2 H* f! A8 k
  8. #include <fcntl.h> 
    , ~! z. G# r; D1 j& e( v1 P4 A
  9. #include <sys/time.h> 6 P5 _% A" N" z4 |; i3 u( G
  10. #include <sys/select.h> 
    0 x. H! x  |) _( @
  11. #include <sys/ioctl.h>  ! O) L9 u$ h" R- M- z) S+ C
  12. int main() {
    : S+ R2 J8 b$ @  f- ^5 ]5 @
  13.         int sockSrv;
    2 {) m8 g# [/ C( m7 Q8 S6 Q
  14.         struct sockaddr_in addrSrv;1 C' c3 o3 H5 E3 X# c6 t
  15.         int len;9 \/ c4 _% s$ }( q! s: N1 f2 P
  16.         char recvBuf[100];3 h* m: j! z( z; r4 V( \2 C
  17.         scanf("%s",recvBuf);
    : m4 n1 z/ F) U2 B8 m2 n
  18.         struct sockaddr_in addrClient;/ W! G2 A' S, B. K( }1 w1 p
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    % ]- D9 n% `. Z0 H
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    ; @1 @6 J7 N5 @5 a0 V
  21.         addrSrv.sin_family = AF_INET;: s. e" h( a3 P  D
  22.         addrSrv.sin_port = htons(6000);
    6 ?6 X4 j5 T0 Q* C7 t2 {0 N0 i+ P$ f6 m
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));8 \9 ]& _$ g6 S/ v' B; \
  24.         len = sizeof(struct sockaddr);
    5 M/ o- v+ i! b  R1 G
  25.         memset(recvBuf, 0, 100);3 m: G) N, G- e- w0 Z
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    2 I* R* t9 G1 y0 K/ J8 u
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));6 }! Z7 i: L, w6 p- x( B1 @9 x- c
  28.         printf("Client data is:%s\n",recvBuf);0 c, e% r: s' f9 ~) X, L
  29.         close(sockSrv);
    6 u' P# n  E. [$ d
  30.         return 0;
    9 F1 m' G: M, F: p4 |& C2 {  R
  31. } 
复制代码
& {2 P; }3 [  E' M. v% H% ^

% [# R* Q$ o2 k* k- s/ h8 P
: k8 Q- R* f1 E3 v  k: b
5 b; f" v8 P0 O$ z$ Y
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-21 02:07 , Processed in 0.077233 second(s), 18 queries .

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