QQ登录

只需要一步,快速开始

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

Asp.net编写的PING工具

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-14 15:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>    Asp.net编写的PING工具 + P, K3 B& S. w' C0 Q7 w4 o7 S! \
     
% [) W/ o, `6 T+ O; E0 b* J% Q     & g# L" s* L  p' j
    PING 是一个用来检测网络连接速度的工具,它会在本机和给出的远程主机名之间建立一个SOCKET 连接并向其发送一个ICMP协议格式的数据包,然后远程主机作出响应,发回一个数据包,通过计算发送到接收数据包的时间间隔,我们可以确定连接的速度。
5 }' c- L, A& j# }     
5 A1 p. S0 H0 K  F  E     , q6 J+ f, X3 v' K3 u
     * ~+ [0 }$ X4 U# ]* ]/ v" t
     此程序可以使用于 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 j$ ^) A( T4 A: N# R' d0 D
     主机+域名+邮箱 的优惠套餐,可以见 : <a href="http://www.now.net.cn/special/host.net" target="_blank" >http://www.now.net.cn/special/host.net</A>1 a! k4 z1 }. f1 p
     ; `) o7 a7 M4 x: u0 S, V/ D6 c
     
5 H* Y; ~. n1 M8 f- A     ( z6 u6 ]5 W8 A7 ?8 T- \
    使用方法 ping &lt;hostname&gt; [/r]
- {$ P4 w5 D3 X/ p* p     
7 H4 U# d; F* R/ b& q4 ~    &lt;hostname&gt; 主机名
# ]8 U1 f! n! G% q) I     
( a( L: d- M4 T. t    [/r] 可选属性,决定是否连续的 ping 远程主机。
* r0 n' E0 r, x( A5 _' j     & ?! j  m2 W5 B0 H
     
2 ?6 e, S0 I$ m6 G    下面是代码:
$ W* q; H8 @! L5 ?& m/ s# x     
7 q7 f  E+ v* \3 @    ///ping.cs
7 ~& X& |, I6 r3 Y& y: i/ X+ y" r     " v9 Q# I7 z$ I+ R1 }
    namespace SaurabhPing
) _8 B' h5 F* d& X; e+ r3 K! X     . ?; {% g3 z/ K9 X
    {
% B8 S+ w; p5 o6 Z& w9 ~" T     
$ g7 H$ \( o) O& i. j& n4 |3 i" @  r    using System; . \: R. a2 W- R4 a4 l
     . P% j0 B  D6 Q( }9 n+ k9 I' i
    using System.Net;
  w* B+ `1 `% l! S     2 y+ X& i/ i' B8 g7 y1 E7 @( M
    using System.Net.Sockets;
. Q" g) L! `; a5 q4 Y2 Q9 T8 g& C     
% y5 c' t+ ]: b    /// &lt;summary&gt;
4 G/ M+ s4 s4 |3 ]  y     
0 Y$ E1 u& q  y    /// 主要的类:ping 0 q' U4 L" B1 O5 J
     + K' {' H( w0 }* w& t; O
    /// &lt;/summary&gt;
1 J  b: ]( [6 o, r: W& \- a     
3 ]( J- g+ {5 l! m    class Ping
* q0 A8 X* J2 G$ ~* a' m, O     
* c( e9 D; F+ S$ [, s    { 9 F. U1 `2 ]3 f: E
     7 D9 L6 y0 C4 R  b- K  ~
    //声明几个常量 0 k, W5 ^( @6 S0 \4 g" U6 u8 V
     
$ a, k  ~4 M( y* I- M* \    const int SOCKET_ERROR = -1; $ P" @1 d( {9 W9 ]9 S
     ( C) h- a5 I* D$ e1 Q% D
    const int ICMP_ECHO = 8; 9 v9 C  F6 c# O! h0 O4 J/ e
     
0 `, ^! v- Q( D. q1 v    /// &lt;summary&gt; 1 N5 c' ~4 ?; h6 N! [6 q6 P6 P& U; y
     
+ R) U  e$ R! H" F  U! u    /// 这里取得Hostname参数
7 v( W1 @; z; b! g- C2 t, H- Z5 \     5 @& I5 B- |; o) q% G
    /// &lt;/summary&gt; / [6 g# x# P% y+ Z
     " A* ~: p+ [/ T0 {2 R) u
    public static void Main(string[] argv) 8 b* q* g1 K' F2 g  `' ^( \
     3 B& z2 M3 u. o% c2 l# [* g& [
    { $ g" ~: v7 Q+ @' F, E6 Q. Q0 K; v
     
% I" ]' H6 a% M! u6 P0 C    if(argv.Length==0) " E: [& l) W; }9 ^" i
     
7 V1 J1 T0 c( L) V    {
$ x. I0 _1 r: P# e     1 A) t& Y( B  l" I  C6 Q
    //If user did not enter any Parameter inform him & y1 w$ {- H8 {  ?2 k  O
     0 m( U& ?: }. J0 V
    Console.WriteLine("Usageing &lt;hostname&gt; /r") ; ) f! M" N6 [$ |: \; O- |4 ^; u
     . {  c! K- l+ y
    Console.WriteLine("&lt;hostname&gt; The name of the Host who you want to ping");
+ s8 F& D; p  a( Y! H: s& A     6 G* L4 a0 ~$ p) Z  S
    Console.WriteLine("/r Ping the host continuously") ;
' Z/ ]6 p# z2 ?4 t  _4 m  v! g5 O3 u, F     
) u! ?+ R% p; m6 G4 d    }
8 V! [; x/ Y& d     
  B. w7 H* M# _8 b    else if(argv.Length==1) % }2 s/ s7 R, u2 A$ O
     
* j1 t! I# l, _$ \  X    { 0 [# ]# F& O! d5 h5 P3 g& j
     3 d9 t( C: @7 N# D
    //Just the hostname provided by the user ! i, f/ Z' a. g1 G( _6 x
     : F, u/ K# {. @2 r. o
    //call the method "ingHost" and pass the HostName as a parameter
! j: _! u+ m  g$ Y7 U2 ~4 a+ V     # E6 e% B, Q; i: c* l4 Z$ Y
    PingHost(argv[0]) ;
2 v, Z1 C5 V/ I     
4 Z3 o$ x' ~4 b. V% a, F" Q0 @    } ! `- V& g# O$ k* L( c) U
     
/ a; F- ?9 a% e- s* e4 z/ k    else if(argv.Length==2)
0 c) B5 f& j1 G1 |' K, F     
& ?# n3 B4 B( s' A    {
) ^  z) u/ v1 T; W! _     
( e4 Y# _/ Q# X9 G5 y9 Q8 c    //the user provided the hostname and the switch ! O- f9 z( r% F) G
     ! T" }1 l( s4 i/ Y
    if(argv[1]=="/r")
* O: d! t  n. E: I3 t8 F, [2 S     / i! L3 I/ T: S  j
    { " ?6 h: c7 R7 M1 l
     
6 O3 ~+ u) l3 m2 C    //loop the ping program & D5 c/ c5 j& ?& }9 W  f
     5 ^/ N. u- A4 @% Z- B, G* e, ^
    while(true) & J9 j8 u' X$ f# f% y2 D4 [6 O
     ; r5 ?& ^. x+ }) T) U$ f/ W& n9 g
    {
1 D2 Z2 }  z; F6 s, S" r: C     
' r* \7 K" ]. k% D- Y    //call the method "ingHost" and pass the HostName as a parameter
5 V9 k7 E. {, u, `$ G     5 A( [! s' q% _, j3 V
    PingHost(argv[0]) ;
0 O. ?: Z4 K0 S3 i     
5 g1 b) x3 F. S9 X, `) m    }
+ r% [! a& ~8 O2 ~7 ^, G     ' s- U( ^- W! q6 @3 s; s
    }
% t! y: L2 f8 @     8 p* z* s1 ?0 B8 }
    else ) F4 m/ V/ x: B5 C
     % f/ [8 S& [8 _; D4 I  b7 t
    { $ }. |6 w; O& U# I1 H: ~# Z; n
     , Q1 u$ ]# |. L
    //if the user provided some other switch + R# W  }* R' m9 k! s% F7 {
     0 @8 Y& ?; S. }: M6 w
    PingHost(argv[0]) ; 0 o/ f5 I5 R) j, X- [: l8 h! z% \2 R+ B
     
$ C6 c& C( @6 P& U0 A- b2 J- U    }
% l  k" i4 Z3 x  J     * }  W( }9 @6 ?! s
    } 1 M# H/ W) {. S9 F/ A6 ?( J
     
. G* d9 t: k5 d( I. N3 t    else
  D8 ?9 \3 @" N8 |8 N" \$ [" J9 B     
9 V, j* Z, |5 t& c6 L0 a! ^6 Y- l    {
5 q# S- X, q2 ~9 |6 g     
& h: _4 c7 h( U# `$ S+ X; z    //Some error occurred
- {! m% |: {. P& `3 d$ Z     
+ y& B1 K$ w8 m7 U! y% P    Console.WriteLine("Error in Arguments") ;
- Q8 R: n/ x! S9 J, R4 X     4 m4 x* w) P  u3 }  y, F$ f
    }
6 `0 A! O* Y8 F! T     
! c& [4 ?5 {9 H0 f- B    }
& {/ J# d- P6 t# C     0 D' W! j- a) L6 f, b
     
1 d/ S" v( o/ X6 w    /// &lt;summary&gt; 4 S3 |$ m) a- U
     
' I% }5 B0 q- k8 j1 q- j7 Q    /// 主要的方法,用来取得IP, 7 ~& a7 ~% Y# S+ X" D: J7 [- g  ~
     
  X0 h/ H, X% q. f. K( L9 z8 ?* k9 {    /// 并计算响应时间
$ E, d" f* W/ u& a+ Y     ; X: b% T. J$ d* T
    /// &lt;/summary&gt; 3 y# U  J0 G1 }9 [" t
     
  p. {) @. f: T) K7 \3 v: |    public static void PingHost(string host) # X& [, v1 {0 U' I# U$ V/ R
     
8 _, T/ [: P9 g) \: t3 i    {
4 s# |' d4 G- E     $ \0 j7 u% G# Y1 ~3 j  \
    //Declare the IPHostEntry , N8 J% W- t. Y$ C* T
     5 V, i; M# R2 Q( o0 ]
    IPHostEntry serverHE, fromHE;
) S6 A( o1 q0 \* A7 w* E( f* }% \     
1 U5 a- U6 `- w' ?- u( u/ I0 U; i    int nBytes = 0; 3 m% U  n% z1 L3 @, x- s! j
     
6 r0 A. T0 D& F' ^, w    int dwStart = 0, dwStop = 0; . v; D2 ^4 O% \" R
     
5 J% |! ^( ~( |% C* y: y% H* m3 p    //Initilize a Socket of the Type ICMP
0 h/ ~1 n# \$ \( w1 D8 v; p3 F     
& U  _" v! v& w3 _& q; x    Socket socket = 5 ?4 z4 K# ~4 Q! ]# U! Y4 v
     0 M! R# [1 N! o9 ?0 d: G* M* E
    new Socket(AddressFamily.AfINet, SocketType.SockRaw, ProtocolType.ProtICMP); 6 y$ f5 N5 Q1 Q3 l# G6 s  n% G
     
& {8 N6 {* Z* W+ T' ]& R& Y     
( ?# |& v8 K' U+ A8 R; P4 B2 Q5 \    // Get the server endpoint + K3 Z1 [- m! [" y/ Q4 X
     
6 Y) i  U# f$ c    try - M% F$ I( M, s
     
4 I# g1 p  \5 {9 r    { ' p+ t, h! V$ L  U' x0 f( F% ]
     
) ?% d1 Y& b& E8 N    serverHE = DNS.GetHostByName(host); 7 V, x4 }+ T' i& T- r: r' A
     
2 n5 z; ?* N% t" a    }
/ i- p! _. w. D; s* S/ i3 ?( c     5 \3 S1 E8 t/ i4 J/ p
    catch(Exception)
- ?( L/ ^4 |; R; E( g- M7 j     0 C# B2 J4 C; K3 H  P2 B; `# k) {
    {
; x5 K2 u  y$ {# l, S     
$ b4 ]) @; j' Y9 Z, P$ x    Console.WriteLine("Host not found"); // fail 0 t6 i3 i9 F, ~" B! A
     
2 W4 x$ u. w0 j* x& B    return ;
0 f5 P4 [+ }. Z; s$ K# t     
0 o+ ]+ i! W/ o1 h; f* t    } + X: s3 }2 {8 s2 _+ y" B
     / m) a. Q4 @+ i7 j  x2 U9 W
     
, i4 ?0 t3 o  y) }0 e$ o/ _    // Convert the server IP_EndPoint to an EndPoint 0 S. A7 S5 v  n  i9 P$ N
       x* L! o/ Z7 [( @0 W
    IPEndPoint ipepServer = new IPEndPoint(serverHE.AddressList[0], 0); 1 a% o$ Y( ?$ d: c! l% x
     ' |) l+ T/ U* z; h+ k* t
    EndPoint epServer = (ipepServer); ; ~: A. n) ]  S+ b' w
     
4 j+ W; G, A/ o; N4 v% k3 J     ! N9 o1 G6 r/ ?/ }! x3 D, c
    // Set the receiving endpoint to the client machine
  y" O' u9 M5 j     * v- V* a1 h$ J* V
    fromHE = DNS.GetHostByName(DNS.GetHostName()); , x7 X& b+ ], o, W- d! z; N
     # X! {5 F; U: R& A6 q
    IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 0);
. M" U" ?2 e; h' Z- a     + m: l6 A: B7 e0 b" d
    EndPoint EndPointFrom = (ipEndPointFrom); ( D3 v! |+ s+ e; {6 p
     
) v: s, D& s* W6 Q; Z: c     
4 A1 ?3 Y7 E- |5 B    int PacketSize = 0;
& Y% V  T9 j8 {4 }9 L0 `& c     9 ]" f- H$ A; [( e+ Z! ^6 T' N
    IcmpPacket packet = new IcmpPacket();
" Z! M* _8 g5 F  t- i2 O- B, W4 y     % C% M) A5 H# S/ |3 ?: H, F9 H) }
    // Construct the packet to send & d: E, j: P% b1 I+ n
     
* I; w8 b6 ]( Q. x    packet.Type = ICMP_ECHO; //8
) p/ t: f1 Z" x     
" k. L/ L1 L/ Y, w% S% j2 f    packet.SubCode = 0; $ j2 k( u- l2 p2 E! l' h2 [
     / O  v, d2 I0 }, O
    packet.CheckSum = UInt16.Parse("0");
. Q; ?# K8 K: {4 s. o4 a. p4 K. E     
4 [; P! V6 K' G) u; }5 O! u4 K( K    packet.Identifier = UInt16.Parse("45");
7 X! F' W2 M* h     
  s6 C. g2 f$ z* F+ ~, d    packet.SequenceNumber = UInt16.Parse("0"); 2 y# C2 O4 {, y, }! K: Z
     $ u0 t/ z( O; V) _7 c! W( n# l  w
    int PingData = 32; // sizeof(IcmpPacket) - 8;
& s1 C9 [5 |2 X/ h6 [: O     5 ]1 M3 H% R8 S9 t9 ^
    packet.Data = new Byte[PingData];
: D" `8 Z) ]. u  {. g     
+ R' Y6 u3 E2 Q; A    //Initilize the Packet.Data
# W; U4 o2 I& T# p( Z     
  O6 h* \, j# e2 R$ D    for (int i = 0; i &lt; PingData; i++)
9 r" M' H2 B6 h" J( ?& X     & ?& F" f2 s% r
    {
. L2 I' r8 W, m6 {8 g# [     
3 s' [* ]% s2 A$ ]9 }0 y+ \4 l    packet.Data = (byte)'#'; ; m* Z# E1 i4 t( ^
     2 A% E  P& Q7 Q
    }
% X! x7 d& J$ o/ D     9 {. g5 D0 I- i$ ?
     
& z  r6 e8 T4 a# X1 V    //Variable to hold the total Packet size ( [) J, H- N1 M5 j) N
     
7 H$ ^( C" M4 i+ ~+ @  k$ a    PacketSize = PingData + 8; 4 Y/ c5 H" [, Z7 l
     
% S6 e' O5 n* l+ Q# l3 k! M    Byte [] icmp_pkt_buffer = new Byte[ PacketSize ];
3 H4 ^# C" ]$ \) v/ y  d) a& E     
! [, m: s3 ~. a    Int32 Index = 0;
3 E1 a; h, E6 x8 H     
: e: o) ^# K& D) O    //Call a Method Serialize which counts ( U6 C8 U2 J- ~) w* o# }" ?
     
9 D% S7 u4 L2 D2 z    //The total number of Bytes in the Packet ) m0 u' J1 a& d( {& {
     
# X" `5 m( {' b/ e$ r    Index = Serialize(
; L6 M4 h7 }, _  _) n, m( p: K     
7 i& L2 V: p0 o$ z# K1 `5 g    packet,   b+ j( j8 ~% y; y- c
     
3 X! n; l: n, D; H% X    icmp_pkt_buffer, 9 u# Z* K4 {, }* \* @! A
     $ `" Y0 |+ Y7 ~  F+ Z: S" L
    PacketSize, 2 J( p* k; |9 n, i
     ) F  f: ?" W( r1 ]! B: H
    PingData );
4 [7 n8 D+ O5 h. [9 y& t     . G* [+ S, q$ y' z$ n
    //Error in Packet Size
6 @% b& ]# e; g0 X     
* ?; u$ \2 v9 K+ q    if( Index == -1 )
( x" h7 f0 z3 F: t     ; j$ X4 a; R; U+ D
    { ! E! ^9 u$ D& j* h8 p
     ) s. X* C; g4 K# o+ A
    Console.WriteLine("Error in Making Packet"); * I) V6 D% O- Y; k$ E
     : l7 R- l. x! R/ Q8 A4 S
    return ; * Q. f: I# a* B
     
& A& v6 Q) d$ N1 k, G! E' E    } ' w1 C0 B3 E; d5 c; Y$ l/ v
     
+ p7 w& |- q3 y5 ~+ {     ! p  P5 `+ R2 G1 V  ]
    // now get this critter into a UInt16 array
# g. ?) ?7 b6 O8 f     - _4 L  L1 `8 \7 \9 v) H
     / V  s* S2 F& c8 u: t9 C& G
    //Get the Half size of the Packet 1 _+ M$ R; t* H! H) F6 `! _# y
     ( y; J4 |3 w6 f8 [0 R8 }
    Double double_length = Convert.ToDouble(Index);
2 O9 O$ D/ l4 O     
  U7 h  v! r, Y8 z5 K    Double dtemp = Math.Ceil( double_length / 2);
. U  e( h. J& {2 }2 o     4 `. I, v  x+ U- N; C
    int cksum_buffer_length = Convert.ToInt32(dtemp); ( r/ @+ ~; I7 u5 V
     % ?1 l* f: T; \; a* d; M
    //Create a Byte Array
: `0 p$ ]1 |% x6 v     
8 r) J( P+ ]' c    UInt16 [] cksum_buffer = new UInt16[cksum_buffer_length];
8 ^6 S+ o+ l4 g* z     - k5 o, v6 o% W+ n( y
    //Code to initialize the Uint16 array ; J2 E6 t. B; Q6 @- k0 v% z' T
     
* V2 d6 T, E' s) |" j6 J3 _    int icmp_header_buffer_index = 0;
0 V7 L5 ?6 d# p+ O! X& T  G     $ d0 M3 K8 s5 O: o) i/ u
    for( int i = 0; i &lt; cksum_buffer_length; i++ ) { ' Y/ w2 G4 K6 M5 o$ M& G
     
" @1 Q$ a# l8 m; j/ E    cksum_buffer = : X0 N/ a: V  Y: L  v' u, v8 l4 }
     - v! B& C2 `4 E6 L
    BitConverter.ToUInt16(icmp_pkt_buffer,icmp_header_buffer_index);
% p- C$ m0 W) f  r) a     ' S/ ~/ F  I& B( P0 M$ U
    icmp_header
1 D- f6 e/ P0 p7 p     ) _# E" a  h1 W' |5 {
    以上代码可以直接在时代互联的ASP+ASP.NET 虚拟主机上直接运行,欢迎试用 !到<a href="http://www.now.net.cn/host" target="_blank" >www.now.net.cn/host</A> 订购后可试用 !   u  X/ E- ~, R8 T
     
  e1 g; O5 G8 z9 d! U! Q% ~5 g     关于ASP+ASP.NET高速虚拟主机,也有同时支持JSP(JAVA) 和PHP的综合虚拟主机。也可以试用,其他问题可以有免费网络电话咨询,
+ w; c; J$ h5 A1 }- U     欢迎随时联系 <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A> </P>
& k* R6 o+ @/ \9 \; l# N<>时代互联(<a href="http://www.now.net.cn" target="_blank" >www.now.net.cn</A>) 的虚拟主机,免费配有 CDN 镜象网络加速 ,送域名 邮箱,流量访问系统,留言版,计数器! 5 ~$ l8 c* {2 n. z, P# ~
     0 f. q! U6 l; X4 y% \2 ]
    虚拟主机在线订购试用,请到: <a href="http://www.now.net.cn/host" target="_blank" >http://www.now.net.cn/host</A> 1 m7 H0 F# D, R3 {
    域名+空间的优惠套餐可见 : <a href="http://www.now.net.cn/special/" target="_blank" >http://www.now.net.cn/special/</A>
- @  R0 k( m3 u     7 I, U; v" S- ~
    如有问题要咨询,时代互联提供免费咨询电话,点击这里: <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A>
) \, s# i- s, e; R5 W( e    QQ 联系 :405881840 108786612 </P>
) X9 M9 t) t  g' V* i3 n4 [<>----------------------------------------------------------------------------------------------------------------------------</P>% Y3 x6 j+ l* W9 f: a+ r
<>
  p7 }0 b: y$ W: I       主机租用,折上有礼,租用9折优惠加送价值3600的CDN 主机加速器 !详情见: <a href="http://www.todayidc.com" target="_blank" >http://www.todayidc.com</A>
# B6 X2 o. Y  p: H5 |7 k     & @9 B, }+ ?& s( K7 B  v, x) T; @) d
    企业邮局—— 立企业的统一形象,自由增加帐号 划分大小,不限制附件大小,繁、简、英3种界面智能显示。强大Anti-SPAM反垃圾邮件使用专业杀 引擎Anti-VIRUS,在线实时自动杀  ,价 超低! <a href="http://www.now.net.cn/email/" target="_blank" >http://www.now.net.cn/email/</A>
/ I1 V' R3 k( [* _+ ^& l1 L6 L; g( h     7 n* {- z! D( v7 |
    智能建站——3分钟就建立了数据库功能的网络交易平台,只要填写公司的资料或图片,就可建成网站。免费试用到 : <a href="http://www.now.net.cn/auto/" target="_blank" >http://www.now.net.cn/auto/</A> + x8 t# j5 u1 P
     1 m% r7 o" c) |0 ]4 J- X1 |6 h6 q: p
    繁简通—— 300 元就给你一个完全同 的繁体网站,方便开拓 外市场!免费试用到: <a href="http://www.now.net.cn/fjt/" target="_blank" >http://www.now.net.cn/fjt/</A>
9 G: c2 D- ?% W. M4 @) h     , M9 X5 O5 C; I$ c* U$ h
    动态域名——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 09:00 , Processed in 1.296932 second(s), 57 queries .

回顶部