QQ登录

只需要一步,快速开始

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

Asp.net编写的PING工具

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-14 15:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>    Asp.net编写的PING工具
" ?- t4 o+ ]; [  P8 R- @     
- w/ y% B4 @, {: P- Z     7 h' W. U3 T! u# O4 S: R
    PING 是一个用来检测网络连接速度的工具,它会在本机和给出的远程主机名之间建立一个SOCKET 连接并向其发送一个ICMP协议格式的数据包,然后远程主机作出响应,发回一个数据包,通过计算发送到接收数据包的时间间隔,我们可以确定连接的速度。
8 k8 [5 ^$ g( C2 J  W# p     . r  a2 F1 j2 J
     ' q9 ^$ p- @5 {, I4 D
     
2 N4 c8 X3 z$ M( x4 u' l$ Z/ a' L     此程序可以使用于 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>
9 @% d5 ]2 ]1 M. Q3 e+ X     主机+域名+邮箱 的优惠套餐,可以见 : <a href="http://www.now.net.cn/special/host.net" target="_blank" >http://www.now.net.cn/special/host.net</A>
- F9 y" X* c3 H2 T& C     & B9 |$ [4 _# c! L' f
     ) }6 L  _! ~' }. o+ y) r) k  e
     - _' ?3 g# V6 U/ {
    使用方法 ping &lt;hostname&gt; [/r] 0 p* h) C4 t$ Z! H, |6 u' D9 u& ^
     ( M! C$ M' B7 Y' S% c
    &lt;hostname&gt; 主机名 + _$ O8 f# L* q5 A2 d' o3 S& Z
     
# i: n* Z/ z1 R, S' i" H8 H% L    [/r] 可选属性,决定是否连续的 ping 远程主机。
/ P$ K9 d3 r$ `7 X+ b! v: y) C; Z     ; o% S' ~* `: l4 b5 W
     
7 `! S/ z  T2 G    下面是代码:
8 [) B# q4 W: n4 N5 U     
1 E: \% e4 i( C- d    ///ping.cs
% L3 D4 s8 S$ n' ~% m! i3 m1 S     3 a6 k9 R1 d( Q/ O7 p1 A4 e
    namespace SaurabhPing
" K; r& L3 w9 {+ `1 p, ^     
* i  l5 c. l5 g) o& k% F% }    { ' P- ?, v% Y3 z4 O* h& c9 Z
     
) t7 ]  ~7 `% z6 q; h4 g+ i7 ]    using System; ' L1 i! J1 l1 g- c
     
( }) E' K, v8 ~( \    using System.Net;
- u7 R  k. }! _) ?: D' c     
9 ?  @- h1 z/ ?/ d2 g    using System.Net.Sockets;
+ r$ N2 F0 e' B5 e0 l: z     $ `8 l& |1 `4 a# _0 v$ G9 ~) Z' I4 {
    /// &lt;summary&gt;
5 c! Z6 ^2 S% n2 |) y! B2 h     ; M( h' g' y  d. G# D& C0 E
    /// 主要的类:ping
$ b7 \: z) Q7 G5 O     
( G3 e. X! x6 \& Z% o4 p    /// &lt;/summary&gt;
' ^8 `/ Y$ D" U+ g3 x: r6 S! v     3 q4 |5 m4 w  M1 p- ^/ B: Q& Y
    class Ping 5 g9 H6 D. T2 S4 k2 w  e
     - s: G1 w# A- X0 a: t3 J6 m
    {
) U% y$ i7 I  o, p' m     8 z# Z* Y! {) |  |/ {
    //声明几个常量
7 {6 r9 x! A4 w; R6 }3 B7 A     
8 U1 G5 A/ V: N% J    const int SOCKET_ERROR = -1;
% u+ J, m% {- K* t     
# t8 f. m. [0 w" h' J; h& |; V    const int ICMP_ECHO = 8;
/ G, R& T1 x: ^( }& F) F     
  g% Q3 g' E' v" e) t7 y$ h0 p- {    /// &lt;summary&gt; 5 d0 j1 w9 j) D8 p0 ]7 j4 K
     
, ~4 A. h+ {5 d5 g" C    /// 这里取得Hostname参数 4 m5 W7 Q4 f. X% a) z
     % c- e- p3 {5 u' A9 v$ @
    /// &lt;/summary&gt; % S/ S1 n9 t" c2 Y9 j
     
: y9 X: l0 K4 ?7 X* o    public static void Main(string[] argv)
3 a  W- T6 M# L% e2 h     
. _$ k. L1 ~9 U. @" ]7 s1 Z    {
/ C: K7 P- v& Q) Y     
7 t: X1 A: w! `  G8 h3 L  s% I    if(argv.Length==0)
% i6 y1 Q0 d# I+ d" w     
. n" P$ n9 `: g1 S0 j* P    { 7 P7 Y* x4 m% [
     ' y7 y+ G4 C& A
    //If user did not enter any Parameter inform him
) L$ O+ N8 z/ A) H$ I     
3 p& l8 X. `5 |  |) @  J    Console.WriteLine("Usageing &lt;hostname&gt; /r") ;
' N9 L+ p2 t& k3 {, u& f( }     
2 w+ k3 r2 S4 H    Console.WriteLine("&lt;hostname&gt; The name of the Host who you want to ping");
) s0 m' [( C* ]  [* B' C% D" F     
, ]* O5 `( `. S" }' h5 R    Console.WriteLine("/r Ping the host continuously") ;
( T% I1 ?( @+ x     
- h2 z) N$ d0 R9 f) {) j    }
6 v4 I6 \: _5 D1 _     2 \9 Y8 C6 z+ a6 ~, [* A
    else if(argv.Length==1)
* i" f+ v8 H1 m8 d% }! q     % ?6 z. a0 Z! ~  U- F0 O/ a  B! E2 q
    {
$ c, v9 J2 H2 H: ?     
" Y% D& V( ?* s0 W" {4 e    //Just the hostname provided by the user 6 R* I* A* h" R- k1 Q) S& A
     
: |! N: ^! G6 s8 Z8 C    //call the method "ingHost" and pass the HostName as a parameter
- ^# C, c0 Y, H# ^1 T: m4 U     $ R5 ?# o: l' T0 b6 I. F
    PingHost(argv[0]) ;
- \  O/ T. E2 J" a- |9 K, R3 l+ G* F     
! ]0 ]8 Y+ ?" c7 j" J5 H    }
+ j6 V: @) {" V     0 M1 k, Z2 Z2 l! ~
    else if(argv.Length==2)
. q5 N$ C/ Z# |% r6 w9 I: Y) a     ( Y$ C2 A2 E+ r/ k% v
    { ! Q6 z5 ^9 ^: w, }% I. o
     
5 D0 o# R% V3 n' C* ]; }' Q# A" Q    //the user provided the hostname and the switch 9 e  O4 t1 f8 }0 Z3 C5 Z; I
     0 k( b4 ^# N2 ]
    if(argv[1]=="/r") 8 q2 Z1 _+ M9 s* ?9 m
     , R4 z+ ]/ a* b& _& O  T
    { ) k( n( G" V; R. d) P1 [2 X7 b; S
     
* Z5 c9 I9 p9 N5 v; j    //loop the ping program ( O  L& z# Q7 b2 H2 q$ Q: B' [
     
6 J! J1 n8 k8 X4 ]1 b" d- T% V0 k    while(true)
1 H, i' P4 q5 w/ q* r  A     
; W& }4 K4 i3 T1 w! F    {
$ f; w  m& C2 ~" \+ S     
2 A6 k" q, l5 i" F    //call the method "ingHost" and pass the HostName as a parameter
+ R; m0 i  _- _" U% Z* m: P6 a* c     
+ z! J* k- H* A& y/ Q; {    PingHost(argv[0]) ; ( F( k  P9 n# a! w: d
     
! P6 q+ S4 l& |# ]8 V6 Z    } 8 \, G. a- Z" N/ N
     / l/ o4 Q, W0 c4 ^/ h
    } 8 C9 f4 f/ g1 W% ]# `
     ' O4 y. v0 f* ^8 }: D
    else
( O  i% g' B6 c3 q6 B     
+ M1 z: Y  @+ p" H  l# z    {
; v4 T- p6 D8 ]) T% w; O     5 N8 q( [' L- o" l+ t
    //if the user provided some other switch $ k& Q# m2 K3 U, }) G$ o) _+ t
     
- `3 L9 E( e- b" X+ m' X) ]    PingHost(argv[0]) ; + a$ F7 @5 e: j* b
       ^2 Z5 `' ?- h8 L5 K
    } + J& A) Y+ y/ j8 P
     
1 e& d! I, y# k6 v8 Z: @: J$ w    }
  i7 ~+ ]: a% W6 X# O3 `' m     % X' M- P% F) f
    else " y' g' ^6 d( L! Z& w4 M
     
& k% v. l, z2 G& X    { 9 `; g- u& d+ m0 Q
     
, o1 o, U/ |2 H' h! O    //Some error occurred 7 |7 l1 D3 @+ G3 c$ u* S6 Q
     
7 K) S. N* l- b& W    Console.WriteLine("Error in Arguments") ; , L1 N5 E; ~1 L' E; I8 l2 e% |
     . @- l0 ^; ^8 N3 ]8 S
    }
! r9 l+ x) v( U     
- R6 v# m8 L2 P8 x- K    } # b" k- F0 }" j
     
/ i' m2 f- ^6 T+ e  V     , D& z; E1 r) H) |
    /// &lt;summary&gt;
' q5 Y8 M& J  p! w  [% I5 o, e     , R2 p4 _! `3 s4 _  Y: V
    /// 主要的方法,用来取得IP, $ t" ]1 q: |* s& D% v+ y
     
3 Y: G- v) s, P    /// 并计算响应时间
9 q. l( I! H0 j2 `. j1 g$ `     ( f% S# R5 M6 r( D7 R
    /// &lt;/summary&gt; 4 H4 v0 l3 s% ?2 z: c
     8 Y1 w: p- |* \  q. s; k
    public static void PingHost(string host) . [+ U' L' _, d1 I' p/ J* A% H
     $ V9 c  S! ]4 Q) C! I  ]6 y
    {
7 G% R" v0 W' _  Y! y- x     8 I$ L/ z' O7 x0 K
    //Declare the IPHostEntry
9 I/ B9 s  [. D     ) \% O' K* g( x& A) T
    IPHostEntry serverHE, fromHE;
3 {9 W) b  X! r0 O8 V# E. ?     
2 c0 C$ u; X! n. |: e# R- q/ ]5 X    int nBytes = 0; ; l" {: d7 S3 M( N! s: [# G. p
     
  R3 V9 z. ?2 x5 M    int dwStart = 0, dwStop = 0; ( w: d! P0 J3 j0 `
     ' v* G" C: l/ j1 h1 w2 ^
    //Initilize a Socket of the Type ICMP % Z) M' D- A2 o7 k- m
     4 T; T. V! G. [7 {5 L+ _
    Socket socket = ; A8 c1 d" p' X$ T1 \
     
6 u# j! M8 \0 V, X( H0 R    new Socket(AddressFamily.AfINet, SocketType.SockRaw, ProtocolType.ProtICMP);
5 q# b+ d; M& E6 u/ ^7 @0 P. {     
. q9 E% S+ F" u$ |     
7 U, Y6 T; j$ L  O    // Get the server endpoint
6 u; A9 d# q5 z% k& r8 z* M     
6 B" H. @; K' O% b+ }    try
$ u1 q3 Z, V3 G" y% n( ]- h2 Y  a     
% s* _; m( N$ ]; R: U5 `    { - l$ D% p$ k: A5 R# y5 Q2 x
     ( J& u8 @4 X, z& z& L& t% z/ f
    serverHE = DNS.GetHostByName(host); + U6 M* g5 ?, t
     
  ~0 @* h. F$ |7 E9 {3 i* o    } # t& v9 }+ s# I- q: F% @1 s. g
     
8 b8 @. B! U! e    catch(Exception) % ?% C: L4 n+ k! u
     : Q9 T/ R, u2 g- A& B, l7 K
    { 1 l' L0 P; J, ]8 X0 S# j$ z' \
     
$ O; V6 u8 g' p1 [; ^9 F+ A    Console.WriteLine("Host not found"); // fail
8 p8 E) M0 i/ t' `( D- ~     & w) p0 Y  ?, T
    return ; 3 ~, r' Y5 ^: Z. f
     
! O6 m5 B) f, b    } ( t* k" t- m4 Z5 ]
     ; u7 {+ Z. C# [% i( w/ o
     
, S5 [+ P' s9 h# v( ~0 d. t    // Convert the server IP_EndPoint to an EndPoint
6 q+ `% `, n. v  K/ {     $ ?$ ]# `( ?1 c$ z4 B
    IPEndPoint ipepServer = new IPEndPoint(serverHE.AddressList[0], 0); 9 @" y. d% N4 B
     
' D- ~9 I) R$ S2 z1 E2 ?1 p2 A    EndPoint epServer = (ipepServer); 1 g( I" K2 l/ H8 X* @
     / F0 U* [. m: _: ]$ v: z
     
. r7 s* e! u% M  U6 D. h3 {    // Set the receiving endpoint to the client machine
. x, F. i. ?& b) C' r     
. f% o" P6 G2 F    fromHE = DNS.GetHostByName(DNS.GetHostName()); ; n, {. @$ ?; x2 t, y
     ' k0 @2 b) w* f2 b* C+ j0 e
    IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 0);
4 a! I. u+ q$ a, S5 {8 L" G1 c7 C2 }     2 _1 e: c' m0 B- V- R* C7 {' Q
    EndPoint EndPointFrom = (ipEndPointFrom); 3 S4 w& P% C3 G( T( H
     
; c* Z  f& v4 g* k% H( ^3 p: Q     
$ }# j$ K6 S5 Y8 C" h    int PacketSize = 0; ( h  E5 E) e7 x. @8 b% B
     
- ~/ m# i$ n. U    IcmpPacket packet = new IcmpPacket();
+ R* ~& E" O8 [5 C- K     
( q+ P4 @! ]. }6 U  R    // Construct the packet to send
1 ?4 w1 Q9 C8 \" M     
  L; d0 o' y" h: D    packet.Type = ICMP_ECHO; //8
/ {4 X9 |* o: G' |' p" i  d1 v     % g" x: u/ x3 ^/ a
    packet.SubCode = 0;
$ a: Z' S- y& J# _9 e4 @     
7 w  d4 F. J* \* s; }6 ^    packet.CheckSum = UInt16.Parse("0");
3 S% a3 P/ \2 P, l+ \+ Q     . f' A" r$ A( S$ B" S' _
    packet.Identifier = UInt16.Parse("45");
" u9 x' j- ~. ~+ w$ L& q3 K     
6 V, R/ e+ D6 {: \    packet.SequenceNumber = UInt16.Parse("0");
( b$ p4 r  Q) I- J2 l# `, L     
2 P. `5 P% g6 p9 O    int PingData = 32; // sizeof(IcmpPacket) - 8;
* ]; X. c. [& r     
) |1 i# o7 m; a9 Z/ C" Q    packet.Data = new Byte[PingData];
/ p7 }' w3 G, r8 v7 m. k     
0 }/ i$ v* f% r1 H2 _* I% j) g    //Initilize the Packet.Data
9 h* ]4 M) D6 R: N4 X     
" N! Z4 m1 v, V, t0 t    for (int i = 0; i &lt; PingData; i++) 2 a! K/ L* ^2 m+ X, ~( g$ b, d5 G
     $ j. }3 `  {( s
    {
! h3 p+ B1 n# A     
+ O) h: P! r1 ?5 s7 H; |. g$ T) [    packet.Data = (byte)'#';
* e( D) l5 I' ^     
" q: y3 l! j. Y* X6 n; L  h    }   A5 A! i) R8 q* d" j( U" [
     
/ v$ l3 J: b; N4 I: P     ( N4 p2 v3 R8 ^7 r6 ^! f" M! {
    //Variable to hold the total Packet size
/ F. P0 `' B. ?6 H     5 K1 X. R$ V# V
    PacketSize = PingData + 8;
; t' J  Z3 y8 ^% }$ b! s5 E     * R. D. m4 u5 t8 `1 F$ u" p# x
    Byte [] icmp_pkt_buffer = new Byte[ PacketSize ]; : x, Z* _1 S" _' k, A
     
/ ^" N' w7 |  l1 a; ~    Int32 Index = 0;
( u1 k3 Q1 S8 Y     & B2 S: ^& q' G4 ?. n; |8 o
    //Call a Method Serialize which counts 4 ^' f4 A* }: C
     
2 L. o% [4 K' _' Y; J: S& u! p    //The total number of Bytes in the Packet & p0 Y, H* A0 Y7 ~$ x) D
     8 k+ a( K6 I( c& x2 T0 q. K4 ~
    Index = Serialize(
# \) b$ ?4 g! |- w     4 f( a% R% Q* |3 x
    packet,
3 z$ l, O( d+ @     
8 U  u; H7 [% x5 c6 r/ k' d    icmp_pkt_buffer, % k5 n. C# q) \$ ]& e0 X( n5 @
     5 _3 B3 n2 a# \9 L7 ?2 f9 k
    PacketSize, # H, B  W; e7 n, Z( V
     
% z' F6 ^" m' l# f    PingData ); 7 b$ B3 [$ p4 B
     
' R+ p, Q4 l$ D* w5 V    //Error in Packet Size
) P. h3 f+ X) ?     4 n" i0 w/ E% g( p2 `6 g
    if( Index == -1 )
2 h' @% J, p0 u; r$ A     * n0 X% n  ]% C3 @
    { * ?1 R: L0 i7 t# ]; f
     
+ C0 F' z- g' Z7 @. u" m1 r) _    Console.WriteLine("Error in Making Packet");
/ r0 y& P4 {* V( y7 L9 H7 j1 X     
; L. ^- A/ J# n1 H    return ;
3 a0 F  g' ?& q7 W     4 Y! s3 a) A% G2 j5 F
    } ) [; K+ \( K; }$ o1 r
     # i# h/ ?6 }2 o
     
  @2 I, o7 A( G, S0 a6 T6 |    // now get this critter into a UInt16 array $ ~# b1 Z. ~% s  t0 J. d. i
     
% ]( A( _. |9 K9 q; K) f6 d     * |1 k# ]; K6 a3 g5 N
    //Get the Half size of the Packet " A4 h/ o. |* K" C- p+ b0 a
     
% q- ]+ z* t2 ~    Double double_length = Convert.ToDouble(Index); 7 ?2 c/ X: a5 i
     
+ T. P0 W0 I5 F1 U    Double dtemp = Math.Ceil( double_length / 2); " D0 c5 a! k, P2 \5 u- i
     $ k3 g8 Q7 j8 C8 M6 O
    int cksum_buffer_length = Convert.ToInt32(dtemp); : t% `, e# _; L. p
     # W. G- h- z) ], |
    //Create a Byte Array
" ^: U8 B9 H6 v% Z     * Y! b, y2 s# O1 w5 [, _+ Q
    UInt16 [] cksum_buffer = new UInt16[cksum_buffer_length];
+ c( i  a! Z/ w2 ?     
/ W7 c* D6 i6 m4 I    //Code to initialize the Uint16 array
5 ^# v& K1 f" w' c& _     
: ^$ }/ ]/ _9 T+ l6 f" P7 s    int icmp_header_buffer_index = 0;
8 k0 `0 n7 t' i& l( h; m     6 p1 }, A: i, V9 C4 m+ V
    for( int i = 0; i &lt; cksum_buffer_length; i++ ) {   M! {" q4 j. k1 M5 k
     
9 |* h5 k2 x) ]* h% L1 Q6 X' K# o    cksum_buffer =
% `1 B% O8 n3 i     0 }  P! F- q' ~, E  p
    BitConverter.ToUInt16(icmp_pkt_buffer,icmp_header_buffer_index); # }1 N- M9 b) \! Q4 C
     
: K6 B& s2 }( l7 q9 l% U2 g    icmp_header
, \1 h* t! K/ T) _! j1 {( _7 i     / P. O, N, w( h, a& l7 D
    以上代码可以直接在时代互联的ASP+ASP.NET 虚拟主机上直接运行,欢迎试用 !到<a href="http://www.now.net.cn/host" target="_blank" >www.now.net.cn/host</A> 订购后可试用 ! ! h0 J' |! L- \; O7 U" N8 U
     # [4 Z( E" c7 J' l" D
     关于ASP+ASP.NET高速虚拟主机,也有同时支持JSP(JAVA) 和PHP的综合虚拟主机。也可以试用,其他问题可以有免费网络电话咨询,
  H  U: r- {+ {0 x4 D6 {1 S+ E, M0 V     欢迎随时联系 <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A> </P>
6 R; Z3 F% e( m4 U. F; G% V( Z<>时代互联(<a href="http://www.now.net.cn" target="_blank" >www.now.net.cn</A>) 的虚拟主机,免费配有 CDN 镜象网络加速 ,送域名 邮箱,流量访问系统,留言版,计数器!   n; g4 P9 A- h, H6 \6 D
     
+ O4 f* M: t& r! s1 j    虚拟主机在线订购试用,请到: <a href="http://www.now.net.cn/host" target="_blank" >http://www.now.net.cn/host</A>
$ [. _: V6 k( |2 Y+ |# }    域名+空间的优惠套餐可见 : <a href="http://www.now.net.cn/special/" target="_blank" >http://www.now.net.cn/special/</A> . `/ C+ T# j" Q1 d2 q
     
2 o0 A$ `9 g  I" |    如有问题要咨询,时代互联提供免费咨询电话,点击这里: <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A>
' v4 \# H( M- z    QQ 联系 :405881840 108786612 </P>9 x/ m  {9 c4 @3 _+ `8 A# p" J1 ]
<>----------------------------------------------------------------------------------------------------------------------------</P>. x: j0 n4 Z% Q$ s
<>; F2 i5 [9 U- n* W3 X7 r9 M: M# N" |
       主机租用,折上有礼,租用9折优惠加送价值3600的CDN 主机加速器 !详情见: <a href="http://www.todayidc.com" target="_blank" >http://www.todayidc.com</A> 9 Z; W4 r$ {9 }7 O" C
     ' H6 ]$ L/ M; t; T) A  n* e
    企业邮局—— 立企业的统一形象,自由增加帐号 划分大小,不限制附件大小,繁、简、英3种界面智能显示。强大Anti-SPAM反垃圾邮件使用专业杀 引擎Anti-VIRUS,在线实时自动杀  ,价 超低! <a href="http://www.now.net.cn/email/" target="_blank" >http://www.now.net.cn/email/</A>
1 p8 F* J( v, h3 w" t     ! x5 D7 `$ ?. P
    智能建站——3分钟就建立了数据库功能的网络交易平台,只要填写公司的资料或图片,就可建成网站。免费试用到 : <a href="http://www.now.net.cn/auto/" target="_blank" >http://www.now.net.cn/auto/</A>
# s6 n: H1 j* w4 h! }, Z9 N       b* m: _& g0 {) `8 e4 p: I. F/ A
    繁简通—— 300 元就给你一个完全同 的繁体网站,方便开拓 外市场!免费试用到: <a href="http://www.now.net.cn/fjt/" target="_blank" >http://www.now.net.cn/fjt/</A>
" \+ Q6 ?; ~1 U  }( O) D     : a9 u$ b2 @& D) s5 g! }* Q# T
    动态域名——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-4-20 14:21 , Processed in 0.447738 second(s), 58 queries .

回顶部