QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2665|回复: 0
打印 上一主题 下一主题

Asp.net编写的PING工具

[复制链接]
字体大小: 正常 放大
sskke        

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-14 15:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>    Asp.net编写的PING工具 5 J0 [8 N5 l/ \
     
3 v2 B) i' L$ |; r! O     
  W* H& B: m- [4 B% N/ B    PING 是一个用来检测网络连接速度的工具,它会在本机和给出的远程主机名之间建立一个SOCKET 连接并向其发送一个ICMP协议格式的数据包,然后远程主机作出响应,发回一个数据包,通过计算发送到接收数据包的时间间隔,我们可以确定连接的速度。 ) ]  z" }; T0 a" o) L* o
     
2 w$ U8 P8 {+ u: P/ ?     ( n4 n4 f* g! [4 x; y
     & A/ K( p% c  ?5 j
     此程序可以使用于 asp+asp.net 虚拟主机,时代互联(<a href="http://www.now.net.cn" target="_blank" >www.now.net.cn</A>)的虚拟主机可以支持 。虚拟主机的其他的配置问题,可以见:<a href="http://www.now.net.cn/host" target="_blank" >www.now.net.cn/host</A> 8 Z  m3 H4 c! T. g% B
     主机+域名+邮箱 的优惠套餐,可以见 : <a href="http://www.now.net.cn/special/host.net" target="_blank" >http://www.now.net.cn/special/host.net</A>" A0 P" r( s5 M. `! F" L
     # o. w) Y4 T& q8 k9 j. G- Y
     4 f0 j5 `8 N. \+ U, Y
     
5 u: F3 Q2 V7 O2 \/ {9 L% b    使用方法 ping &lt;hostname&gt; [/r]
$ Y& B4 `* O. i3 L4 A; X     
: g: {2 \$ I( \5 P    &lt;hostname&gt; 主机名 3 S: Q' l! }0 J' i" T$ i% `' P
     
* H8 K- `: O  V; d    [/r] 可选属性,决定是否连续的 ping 远程主机。 - c8 Z' r5 Q( M) ]
     0 }; A; L! U9 t5 I2 f5 _2 J- ?3 t
     
5 K; Z+ x! L0 V+ H( G* A    下面是代码:
7 u) `, ^* `9 V1 P6 _1 W$ V+ Q( U     , Z) U' ~1 z; x- L5 X. }
    ///ping.cs
  q" e3 F- n) v$ F     
8 e# n( y2 `0 u+ O1 i    namespace SaurabhPing
6 z/ s/ m/ g2 u2 u  q     
' c3 Y" H  k" }    { : z# k( z- g/ z! j
     , b5 `( c4 i! h6 r! y4 s0 r
    using System; : k. d- ?( [& v
     8 y' ?& N' {; p7 |
    using System.Net; ! U6 I2 _/ ^2 v& F9 L, v( Q& f
     # N! S8 o4 N6 C( R7 X0 j  f
    using System.Net.Sockets;
4 T, K( s3 @6 |0 d- M  b" e. w0 Y     
7 S/ W. m& H6 W0 g9 @    /// &lt;summary&gt;
7 R3 A9 w; l* P* t4 v     
6 m8 H0 F1 a& N. F% b    /// 主要的类:ping
* X) R& h# Y% [9 d+ \     
* U) }8 L; v4 Z# F( X    /// &lt;/summary&gt;
* N6 S% o! a+ B9 A* a% w     
7 w4 V; G4 G  T- F    class Ping
$ m7 @6 V, c+ G* o6 k* I5 g     , u% L7 D7 ~# o, K5 C
    {
  g- {/ d8 ~( y/ `4 P3 H     " N" ?" d' I  }0 q; s% |2 e4 S
    //声明几个常量
/ B3 J4 N+ Y5 ?. W5 Y; u6 p$ \     4 D; U7 m' ?& `" R: V
    const int SOCKET_ERROR = -1; ) S  ?4 q* s; [) \7 b/ ~+ {
     * v. Z1 q* j8 M6 x3 c1 ~1 X
    const int ICMP_ECHO = 8; $ o  D' |0 k/ l; Z/ ~8 C
     ' T) o7 T8 Z  C% {
    /// &lt;summary&gt; ! `( L$ J9 p" h0 g- x" c" O4 K& }
     
# l) p) S8 R1 t# ?/ }. m) [8 x    /// 这里取得Hostname参数 / u7 `' g7 a4 N/ a2 h% }% G
     
0 N1 Q/ k$ \! _: m- J+ c/ C  M/ f; g    /// &lt;/summary&gt;
% ~9 f, N  a8 }! P' X     
7 E* n1 r* g# B5 [' a; k" g    public static void Main(string[] argv) / ~  ]) r. j( X+ B; ^
     
5 W* O4 j# l+ s    { 4 }! V8 ~) Y; v  t
     + ]% i: N' w4 }* J: H$ z5 ?3 B
    if(argv.Length==0) 8 Y! ]( N& S/ `1 ~' a- A7 z  F
       |1 \. T' \2 ?7 i/ M9 H  t* I8 F
    {
: T* \6 I* z9 H: t5 \1 t0 Y     3 H1 s% X, d4 S  X2 ^5 C+ A: u
    //If user did not enter any Parameter inform him
2 s( O( [, S7 Y$ r9 P     1 ?8 w( l/ X" J& o7 E3 p4 M
    Console.WriteLine("Usageing &lt;hostname&gt; /r") ; % S* B/ @! h( J- I0 L
     - {- w2 n% |9 Z1 D- C# R
    Console.WriteLine("&lt;hostname&gt; The name of the Host who you want to ping");
+ A$ N$ F( j6 x! G0 S5 I' L     
9 G3 a! q- b  s7 \    Console.WriteLine("/r Ping the host continuously") ;
% z$ W8 z7 o/ N( M. r" @     9 I6 c$ j1 `( y8 z
    } & r2 W5 F& W$ g3 u. w
     
; I7 R' z/ S% F4 o    else if(argv.Length==1)
4 F- X4 z; T' i) g8 c8 D" Q     
- i8 t# x- C4 o' {, |' F! r    {
$ }& H) U' `1 J4 W     
, k7 h' F- }3 Q3 H" {    //Just the hostname provided by the user
. S" b4 X2 j7 v, m, q' n     3 ^$ P* G6 [9 _. ~6 ^3 R6 o
    //call the method "ingHost" and pass the HostName as a parameter ; r- t" z1 g* Q* t
     6 T4 c4 k; ?: _9 o" p+ u, W$ h
    PingHost(argv[0]) ; 2 H, {. K/ M$ O) @' z3 {( K
     ( R8 t& I: n4 e! T6 f
    } & a4 G: {! ]) l
     
1 u9 S. Z# L! J0 X+ }    else if(argv.Length==2) + L' _- _- U7 e3 q% q
     
) e4 v1 T0 g& u0 V" t' c) b    { . J# f, R( i- q: L+ d
     ' A+ z! `) A8 B: s! C. q
    //the user provided the hostname and the switch
5 N9 {: `) ]' v. V     
) J% `# t+ h0 W/ y) i    if(argv[1]=="/r") ( T, N* A# u" D- S- T
     , e( K! m5 K5 G; T
    { " ?9 o) Z& r4 X/ w$ B5 m
     ) g* R! E) i% `8 ]: [/ Z" i0 i
    //loop the ping program & W* Q" N# k* M4 L7 o/ X. ]
     $ N8 n6 P7 @: m! ]+ i7 _
    while(true)
* \  R; j5 b. c# F     6 |6 @- b& N4 E& ?1 O+ B7 _1 `
    {
% Y7 x6 H5 i+ L" o6 k     
: C  O& C* N8 G" W) ^: f    //call the method "ingHost" and pass the HostName as a parameter / _0 T) {% `# ~! I6 Y, m
     # k" _$ M$ ^0 h
    PingHost(argv[0]) ;
( L) N/ T" P) z7 c3 G7 H     $ ?/ ]# E! d* c
    } ! D  |8 }1 E2 y- b: V4 S  I
     
, D! W: I9 ^1 K8 U$ b    }
& h* Z( x( M4 _: T     - R) B# a" {- H9 o
    else / x% o8 R* X( I
     
* r' g3 o  {! O. s3 |    { ( \! a' W/ E" E1 z
     
4 X# r; R; [; ~1 R% p& K$ ?& E2 x. L    //if the user provided some other switch
7 @+ m" U% r% s  q( C& c     
- p0 ^& i4 P4 _" B    PingHost(argv[0]) ;
9 Q1 [; H6 m9 u     
& Q/ U- p0 j) m) A) z    }
9 E1 Q3 Q  e5 I7 l' e     
3 j3 V) R  M. G( C5 x2 d* u    } 5 A0 S  g, E, I, y; F) W, L
     
5 a8 V* y# R  l( ^$ s5 R    else
, I5 x( T0 a& L+ B9 I+ {7 V1 l- e5 r/ P     # [+ T. ?+ a6 V: l
    {
. Y# I; j5 t1 ^' z' e     1 P6 j4 M9 l% O
    //Some error occurred 6 p6 C; o4 ~) j
     
( B& N) P6 A% h    Console.WriteLine("Error in Arguments") ;
9 t, Z+ U3 Y, o+ `     7 z. J" b- u5 l2 w, O: n
    }
2 w: e$ s' o3 s7 j2 K     & x5 L# R' |9 J; R
    }
: C. P  P% }) i5 [4 L& r     
) |& d$ a, _7 n     9 J3 d# a6 g2 h% f
    /// &lt;summary&gt;
1 ]5 J. n' i8 [+ c- p3 c' v     
" h+ m4 I) Q+ e9 d    /// 主要的方法,用来取得IP, 8 g+ G2 X, t/ U2 C9 e( \
     9 M( X; X: f% z$ d7 l
    /// 并计算响应时间
* r8 L2 }* i! C2 X) D/ O0 _     
5 n, O. d3 P1 @/ U; }9 m    /// &lt;/summary&gt; 5 A' T: C' k. l& q/ F
     
1 [, i  ~9 I) `2 x* ]    public static void PingHost(string host)
+ F" w( Z5 j" P' }     ! Y- s4 l: d7 B! N% [
    {
+ s& W5 C: ~& _' p  E% e$ o6 A     
9 T; A' @1 O9 \$ x* e5 m    //Declare the IPHostEntry - R$ J" o, k3 s8 k+ m
     
: I6 y" |' j/ \& a' o3 a" W6 |    IPHostEntry serverHE, fromHE;
; x$ y7 q0 W# S- f, b6 n) j- y+ k     
  `& c' h; J9 i5 R* G" ]    int nBytes = 0;
3 F9 x; \' v9 \, ?. Y- g/ W     5 `. p. W- `: l1 k
    int dwStart = 0, dwStop = 0;
& M. U5 h& h  V5 g0 R% e5 M8 a$ U     " R4 n  S5 H7 w& r" a/ }
    //Initilize a Socket of the Type ICMP 4 p, u% Y% [5 W8 V6 F
     
# _7 k( A8 @5 ]+ F% F    Socket socket =
& P' H9 k2 l# T3 j7 J$ @     
: g, T3 p" g4 k$ I" I5 ~$ I    new Socket(AddressFamily.AfINet, SocketType.SockRaw, ProtocolType.ProtICMP); - s; l' M7 w4 Y. J. r
       `7 b/ w5 H- W
     1 \- {2 Q4 A) N' n( p" b
    // Get the server endpoint & L; A' D4 c: Y: M* n, G, E  z3 ?( x
     / J2 d. y( i4 B6 ?+ z
    try
3 Z! U1 k6 f( T! m; k     ( O8 {' I, E% K. y4 p" j0 D' ^
    { 6 R2 V' W9 B- t7 {$ q
     6 A4 X/ Q* m3 l0 J( m
    serverHE = DNS.GetHostByName(host); ' y( _* W- n0 c; d0 B% a) Q$ _; S
     $ k% `$ X" a- s
    }
) x# H; G3 D: E1 C9 E% O9 }8 [     
- \; m. f+ E1 F3 A9 W( R6 [6 y; o    catch(Exception) & `' t! {0 l  H& x9 j
     : l' R- Z7 a' X5 d% Q2 r' B2 o' C
    {
& V6 }1 ?* n4 _4 y2 q     
$ e, {7 E) T; `( v    Console.WriteLine("Host not found"); // fail
; r8 I* K1 W3 f     5 r: Y8 Y. q8 u. z% X& |
    return ; 4 y- _8 M# N; ~7 l* \4 t' w
     
: w/ C" X* K" b+ S9 F8 @& V' ?    } : i( R& O! a$ `1 t5 T; ^
     
, O0 f+ S! D, b% Y* U/ ~4 t     5 H, r: V5 U# f
    // Convert the server IP_EndPoint to an EndPoint 4 P+ E. L7 G+ S1 C8 |
     9 @& n! k$ }& [9 a0 A3 O% o, P
    IPEndPoint ipepServer = new IPEndPoint(serverHE.AddressList[0], 0);
# u- Q# ?" [8 @/ n. ]     
" e7 @) p& C+ B8 @3 K/ B" f9 M; m5 N    EndPoint epServer = (ipepServer);
) G) L6 O  M& h' R' p% ~     
" P4 A, ]& T$ c# K/ V     
5 t% g/ `0 U6 B$ s    // Set the receiving endpoint to the client machine
, V: r) d! a# `% {       A4 {5 I8 s2 {7 ~* R0 T! ?& h. n
    fromHE = DNS.GetHostByName(DNS.GetHostName());
4 O& b/ g* I: y. p) g     ) `/ c) }; L% v3 y
    IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 0); ' z0 U2 v, W, p2 S
     
" z$ ^% @6 f/ c: k' c* l5 k* m    EndPoint EndPointFrom = (ipEndPointFrom); 2 s# k8 T% `6 c* z# u) Y
     + |* ?; \1 {, L' S2 `2 S
     ) A1 a5 ?+ p6 x0 [
    int PacketSize = 0; 5 X! s& K( E; S$ L  _8 s$ T
     & e, S  s" s& Q6 A) V
    IcmpPacket packet = new IcmpPacket(); * c6 K# |4 D1 U8 R' b  Q: e
     ; o# [+ D) ~- ~. D
    // Construct the packet to send
% W' j6 a3 E! c& J; `5 d1 Q     ; [2 J9 e; C; l2 C2 _
    packet.Type = ICMP_ECHO; //8 8 e$ k) B  W7 ~! H" S0 E" W
     
, _$ v; c2 J9 A: X4 A: ]    packet.SubCode = 0; 1 M! _+ ?6 G: G) o; d
     
# B: J) H; p  R8 F- ?    packet.CheckSum = UInt16.Parse("0"); % X) V" R1 j- Z+ H
     
( [0 _0 \( n" G1 O8 \    packet.Identifier = UInt16.Parse("45"); , ^/ r2 c  m% I# Z
     7 c! S4 U$ N+ t+ l& m7 D8 l  X
    packet.SequenceNumber = UInt16.Parse("0"); ' T+ x9 e+ d3 r1 ^0 N% k/ ]
     6 H3 Z8 [1 r. p: x( r7 q0 L$ k
    int PingData = 32; // sizeof(IcmpPacket) - 8; 1 S) _9 b" }5 \# V: I
     
* j0 v4 T- W6 g& S) _/ M    packet.Data = new Byte[PingData];
& g( X7 f. Z% g) s% B/ Z& S, W     
3 p+ I# O8 ~$ y8 v9 m5 z( _    //Initilize the Packet.Data 5 X7 u6 z9 ^- W) \. i6 u2 O/ C
     , T! c+ g8 k) N! O- j* E* \; S
    for (int i = 0; i &lt; PingData; i++) ' t/ Y0 W  ?6 F' \5 M3 \: n( k
     ) G4 ~$ T0 M8 f) @5 V, X
    {
. B2 Y4 j* ]( l) R' z5 A! _/ y! j+ k9 c     : g: q8 s4 w9 n. n" c$ s
    packet.Data = (byte)'#'; % f8 M3 V% H: ^6 i# e- z
     $ K9 c4 P: u& p
    } ! Z2 q' w& v( z9 |. d
     
) ?" J2 ]2 l" k     # f6 _. v8 M! S" ?
    //Variable to hold the total Packet size % b3 U! T& \" z$ H% k) ^& J
     , R& r0 S' A$ D0 m+ ~
    PacketSize = PingData + 8;
" V) j* _1 ~1 {& p& \     : M8 c$ L2 z$ {0 ^# b# [0 G
    Byte [] icmp_pkt_buffer = new Byte[ PacketSize ]; 0 u. b, g2 F) \/ c* @& ?" T
     " J# z& _& h7 b; D* Q
    Int32 Index = 0; 4 a- ?# `* i0 |+ W
     
! k  P5 G$ S& i+ e9 c7 g    //Call a Method Serialize which counts 6 N5 l" e; G9 B% R
     
* @" I6 `: V+ Q& \) J    //The total number of Bytes in the Packet ) x' h) I2 V  |9 W
     ; H( V# A/ k9 T; W' Q' `0 }% N: m
    Index = Serialize(
% P9 O# D& D# c( I0 `; x/ c* e     
! g" \& n2 H& C. w    packet,
+ Y& S3 K! R" [" H     
% j$ G) ]: N( U0 @* {- C    icmp_pkt_buffer, / B2 H) D9 n6 D/ J
       T/ F# }' Z  O/ X# B' D
    PacketSize,
. i7 A4 t8 W" R     
  [9 q+ d& ~( b- G9 [3 U+ m    PingData ); , |% W% ~/ F3 m: O; a, l% M
       {( S& L( e; l! ~) q, x3 k
    //Error in Packet Size * Z' O  A, K8 C; f! C" F
     
+ g- M. A, G: E( O: Y; I    if( Index == -1 ) ! c' k/ N& G( w/ t8 ]; {4 O
     6 ?8 s4 Z6 ^- C0 R1 J; [* F
    { & ]6 d2 {7 @- y( r: h
     
1 x; }, d' ]3 E  J& f    Console.WriteLine("Error in Making Packet"); 0 H% d7 C& b) p4 }, P; s, r
     ( J/ I5 W$ w7 I. o0 b% w
    return ;
5 s$ t2 q+ r( t$ ?' I* `     
7 M# ?- c3 U# J6 w    } 9 T. J8 Y0 z( |
     
* j$ v. f, V8 Q2 ]9 F     
. {, j% ]5 `# D6 ]- g# X    // now get this critter into a UInt16 array * c, Y; S* _& P: J6 b7 ~
     * X9 Q4 D: q3 l4 ]" r
     : C$ }8 J& c9 [
    //Get the Half size of the Packet 1 L" r$ k1 V0 u4 z; K
     
& w1 F( k5 Z  A' m' d    Double double_length = Convert.ToDouble(Index); / U) R! c( M$ T3 |
     4 O0 ^5 e0 v' y9 X. a
    Double dtemp = Math.Ceil( double_length / 2); * r9 l2 \. c- i- m" ~$ s0 s' h
     5 ~+ n6 {6 L# r  z5 y9 |
    int cksum_buffer_length = Convert.ToInt32(dtemp);
+ ~$ ^/ P6 Q7 C; a+ S  B     
9 r. t" e6 S! T1 Q/ a) V2 w    //Create a Byte Array 5 u  ?: }7 d- S
     # G" Y3 {4 Y! ~! M, V7 D
    UInt16 [] cksum_buffer = new UInt16[cksum_buffer_length]; % A% M9 F2 r1 U- ^9 ]+ N. P
     
2 Y6 x& |6 c9 Q$ U% R! v, `    //Code to initialize the Uint16 array
+ t# k) m# t  R0 d4 E     
  y. G! z4 \0 \6 N% D( j    int icmp_header_buffer_index = 0;
9 O. F- x$ W1 z     
* N0 P, o0 S7 S, R- `* O5 o    for( int i = 0; i &lt; cksum_buffer_length; i++ ) {
0 n& _- n9 j% C. z2 _& T     8 ]1 X$ W' r, X
    cksum_buffer =
8 c6 j& n5 W/ C, `     
7 p) d% N9 H3 \( A! H    BitConverter.ToUInt16(icmp_pkt_buffer,icmp_header_buffer_index); + f& S  ^( n: H3 k: P6 t. n8 O
     
6 o# s- v) O5 |% f    icmp_header
' J( [; W" v  Y- [* N2 V4 v     
4 h# l! q* n6 I, R" B* b    以上代码可以直接在时代互联的ASP+ASP.NET 虚拟主机上直接运行,欢迎试用 !到<a href="http://www.now.net.cn/host" target="_blank" >www.now.net.cn/host</A> 订购后可试用 ! , R9 L. [( Q8 [+ E
     
% u. _/ H1 n/ T/ G     关于ASP+ASP.NET高速虚拟主机,也有同时支持JSP(JAVA) 和PHP的综合虚拟主机。也可以试用,其他问题可以有免费网络电话咨询,
1 P) s" G! u6 y8 R; O     欢迎随时联系 <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A> </P>
& u! \4 d  ]. c3 |' k<>时代互联(<a href="http://www.now.net.cn" target="_blank" >www.now.net.cn</A>) 的虚拟主机,免费配有 CDN 镜象网络加速 ,送域名 邮箱,流量访问系统,留言版,计数器! 2 t0 e; k5 h& b3 b
     - j% E6 a7 ^' U, l6 E: t$ G7 R
    虚拟主机在线订购试用,请到: <a href="http://www.now.net.cn/host" target="_blank" >http://www.now.net.cn/host</A> 7 p8 S, q% j$ M9 E
    域名+空间的优惠套餐可见 : <a href="http://www.now.net.cn/special/" target="_blank" >http://www.now.net.cn/special/</A>
+ J% p7 B, L$ M5 E' {" A     6 t  P1 U0 D8 V  y
    如有问题要咨询,时代互联提供免费咨询电话,点击这里: <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A> ' ]* |7 X2 f+ k: S
    QQ 联系 :405881840 108786612 </P>
' A7 P: m! d0 o: K$ |<>----------------------------------------------------------------------------------------------------------------------------</P>
+ y2 d: j2 }! |<>
5 ^. N" A8 q: ]( |% L- E. l- O$ J       主机租用,折上有礼,租用9折优惠加送价值3600的CDN 主机加速器 !详情见: <a href="http://www.todayidc.com" target="_blank" >http://www.todayidc.com</A>
) I4 X3 ^" Y/ j& H: S3 ]     0 T+ O+ Q& m  @9 l# [% x( Z8 h
    企业邮局—— 立企业的统一形象,自由增加帐号 划分大小,不限制附件大小,繁、简、英3种界面智能显示。强大Anti-SPAM反垃圾邮件使用专业杀 引擎Anti-VIRUS,在线实时自动杀  ,价 超低! <a href="http://www.now.net.cn/email/" target="_blank" >http://www.now.net.cn/email/</A>
, b' h% a: K; q/ c) s8 }     
0 P9 o- X5 P  \& E- x    智能建站——3分钟就建立了数据库功能的网络交易平台,只要填写公司的资料或图片,就可建成网站。免费试用到 : <a href="http://www.now.net.cn/auto/" target="_blank" >http://www.now.net.cn/auto/</A>
) U* T$ n& f+ v2 C$ ^     2 v+ y9 b3 [2 Y5 D; o; T3 W9 a/ l6 z
    繁简通—— 300 元就给你一个完全同 的繁体网站,方便开拓 外市场!免费试用到: <a href="http://www.now.net.cn/fjt/" target="_blank" >http://www.now.net.cn/fjt/</A> ) T, I3 D0 Y% T" e
     
+ P2 A" L1 i& ~6 u# w& s# y    动态域名——380元 就可以在公司里建立一个可以固定访问的服务器,可以应用于保密的资料服务器,视频服务器,网站服务器,邮件服务器,免费试用到: <a href="http://www.now.net.cn/cyberip/" target="_blank" >http://www.now.net.cn/cyberip/</A>  </P>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-10-23 06:23 , Processed in 0.785733 second(s), 58 queries .

回顶部