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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:4 h/ Z. r$ U0 L1 O& }
  1. #include# B& ^2 \% y/ b) W! X
  2. #include, Y" c: ^. c1 ]' @: u
  3. #include
    ' h) G( Q* }4 j# E1 Q& `) ~. g! [
  4. #include
    ( A. m( }# C* i: Y& z! ^
  5. #include4 m2 S  r! {4 I$ v
  6. #include
    ' \  o9 G) u0 R+ O7 S+ e& [
  7. #include
    5 u( ?' ^9 o+ H6 g/ G' u* Z* _5 B
  8. #include
复制代码
, @5 Q  L) W* H. ~  N) ^

; @1 I- V3 Q0 M  I8 _服务器代码如下:
. E" _$ |  p( `' N
  1. #include- ]+ ^  `+ F, e' N( p/ _
  2. #include5 c% h9 b0 m/ y% _* j
  3. #include
    " f; `% D& M! [  q) D
  4. #include
    8 {7 \# ]- U' T' j
  5. #include# `, v% K% d3 @" D
  6. #include+ S/ ~! D7 P4 I6 H+ E' ]
  7. #include" A2 r' W9 m! _8 t* i
  8. #include
复制代码

( p* M3 P( O# a* G5 T, h5 G1 C
! p6 G( T: Y- o# Y+ K2 `/ T% J5 D0 H3 i  R

6 y! k7 O2 X+ R! h4 d" s6 b( X* z5 j! Q) B5 r! s- J
* E) V% q. L; t7 m

7 @/ B) p( T$ J9 s

1 o0 X# P0 |% u& f
# q1 a% ?3 Q) V3 A5 p" i
( T5 c+ k* k0 |+ ]- p5 K7 S
# ~& _; p  X2 L- q( S3 w' ?; N# M- h

8 A! b8 M. W! C: w* |: x
9 a  P* `; ~! J! v) y" y

, K7 b, m2 D8 o
2 v& f# [/ K+ C" g2 e3 |# c  ?
: h4 T- X1 h5 C3 j
- Q+ I$ ^  P" Y
- I  k9 x; z% r8 o( n
' @( ~. @' u! `' F9 G" a
; S- e; r4 K: c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:/ y/ T. x) S5 t+ a$ k3 X% B
#include <sys/types.h> 
1 o0 F: W9 U6 k; v#include <sys/socket.h> 1 M3 U( Q: w4 |, b
#include <unistd.h> ) D1 B" b3 w, F5 J1 m; H% b3 s- \
#include <netinet/in.h> 
% o9 W1 R8 u: Z$ z2 l#include <arpa/inet.h> 
- k7 C7 ]) d! a/ L5 Y; {( N& {' @3 |#include <string.h> 
6 {# F8 q$ j/ o#include <stdio.h>  ' K; E( v* J; f0 `& b8 Z! z
int main() {9 W/ B# t2 H/ n. X8 w: s* u$ H
        int sockClient;
; I! l8 ]0 a) ]6 v. i! s        struct sockaddr_in addrSrv;7 f8 t- |' Q! `# }- e- o
        sockClient = socket(AF_INET,SOCK_DGRAM,0);  _: J8 j5 V1 @0 R/ `& g
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
+ D- k9 V8 ^1 F) Z" x0 o        addrSrv.sin_family=AF_INET;; @2 l3 a  D5 d8 h) k5 ], j
        addrSrv.sin_port=htons(6000);
! X; _6 T/ n- r" s& e        while(1)% ~& ~* t& P/ A) ]$ T' t/ q
        {. ~2 g: i  u: M! j% Q2 S% V
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
+ z; L6 n5 |0 O$ v                sleep(2);& s9 Q% O, Q, A' h+ b
        }    - z$ Z3 B  {: }' i: i1 i- r
        close(sockClient);  $ Y1 t* [# E4 `8 i. c
        return 0; 9 q" b$ Y; s( N: U/ W7 a
}9 p5 z! r# t2 ]+ A2 b: S. v

/ B4 `- Y" Y; n3 A
' _$ O+ Y* G2 j1 O4 n/ b7 w客户端:
  1. #include <stdio.h> 
    6 D* y6 N4 w: J- [1 n$ G
  2. #include <sys/types.h> 
    3 t3 O# E1 ?/ n# n* A
  3. #include <sys/socket.h>   Z. G2 {% `* F! m6 C1 y- B# j8 V7 i
  4. #include <netinet/in.h>   c- D9 I7 Z/ K5 P4 J
  5. #include <arpa/inet.h> % W- D4 @9 ^5 E. ~( |, `2 J( j' w
  6. #include <string.h> 
    " S+ q& ]4 Y8 m0 D9 P) i) U5 }
  7. #include <unistd.h> 1 ]2 L" m8 W& x; _/ t+ I, {
  8. #include <fcntl.h> 
    * @. N+ J$ Z7 \
  9. #include <sys/time.h> 
    ! f) r4 T$ n" M+ Y" ]
  10. #include <sys/select.h> 5 y$ }' M8 I+ ?, L8 S
  11. #include <sys/ioctl.h>  9 X4 M  h) n+ d
  12. int main() {
    + ^' g+ K1 E+ A) w* y2 M% J
  13.         int sockSrv;
    ( ^/ s# |( b9 W! C, r+ |
  14.         struct sockaddr_in addrSrv;
    " g. K/ {4 ]% H4 V
  15.         int len;
    4 k; V3 N, z( e8 B" A
  16.         char recvBuf[100];
    6 ]0 r4 t, _/ h& r5 y
  17.         scanf("%s",recvBuf);) x0 G/ g8 A  r9 u5 ?: Y5 d! |
  18.         struct sockaddr_in addrClient;
    ' M$ \' h; _' e9 w
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);- V, c2 b/ q1 F  d
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);, B- Q% m9 _4 U$ v
  21.         addrSrv.sin_family = AF_INET;+ x& }' g0 r+ b* \8 @6 f
  22.         addrSrv.sin_port = htons(6000);
    ( K, p9 S2 c$ p% I
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));  \2 S* c0 h6 A% e& y5 s" ]  r; h
  24.         len = sizeof(struct sockaddr);( r* Y4 b6 `: P( |4 O) P
  25.         memset(recvBuf, 0, 100);. a8 C7 ^. u! U; C$ w
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);! i/ b- j1 r2 b! g" j
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    ' S6 q7 w5 a3 c) f; I6 A
  28.         printf("Client data is:%s\n",recvBuf);: ]  b4 ?: u& p& E/ m
  29.         close(sockSrv);
    ; P- A/ ]8 X' B6 C/ s
  30.         return 0;0 \7 @, }9 T. a* u  ^# j
  31. } 
复制代码
' L& I" a; C+ E1 r
/ h9 g4 N# d1 G' O

% {3 u$ D7 z6 s8 l1 t/ J& c' W7 q( F( p( X- r
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-4-30 14:29 , Processed in 0.124032 second(s), 18 queries .

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