QQ登录

只需要一步,快速开始

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

Asp.net编写的PING工具

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-14 15:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>    Asp.net编写的PING工具
: K! ]8 B: u& X1 b; y     1 V; w& M! w, y1 ^
     
, f6 H1 {# w' k5 ^' a5 ^8 P" W2 `    PING 是一个用来检测网络连接速度的工具,它会在本机和给出的远程主机名之间建立一个SOCKET 连接并向其发送一个ICMP协议格式的数据包,然后远程主机作出响应,发回一个数据包,通过计算发送到接收数据包的时间间隔,我们可以确定连接的速度。
9 G3 W+ R4 X  i6 t     
+ t( |5 k# _  a; H  s. t     
( X( d6 I  E6 ?' |0 |+ P' L  l     
! z' l* K& l2 j7 ^% Y2 ^7 R     此程序可以使用于 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>
$ _: T; g, N4 t! x/ D     主机+域名+邮箱 的优惠套餐,可以见 : <a href="http://www.now.net.cn/special/host.net" target="_blank" >http://www.now.net.cn/special/host.net</A>9 ~0 Z) s; p, C/ h: c4 E
     
  a7 ]$ O% A% X     ' x7 _2 r7 M: J' Y, x/ o, y
     
+ y- [6 o* \" U. I7 O    使用方法 ping &lt;hostname&gt; [/r]
* |6 `$ Z) h) i0 I     ( [4 R% n4 H5 V: X
    &lt;hostname&gt; 主机名
) j9 ]# \+ \3 C  C     " t2 s7 x4 i% M3 r6 V) K$ P4 h
    [/r] 可选属性,决定是否连续的 ping 远程主机。 6 E% ^8 G9 C7 u" R1 x- R
     . \! p% {; F5 d; R
     
- m$ a" j* M' @3 r' I' Y1 e    下面是代码: & U* C) a9 w1 G! _( A: B) N, b4 f
     ; Y0 h" [: p" f; L$ o( B0 y
    ///ping.cs ( f0 U, Q1 z5 \7 i
       P* w/ P9 o4 @, x: ]3 p6 R* e
    namespace SaurabhPing ) f( U2 _: N- n9 t8 X1 }
     # g, \) j2 {) b, {7 T+ b% o. Q6 ]
    {
( n/ a) t! r  ^+ z     & a* p: ^' S6 V* I2 T& [# H7 ?
    using System;
% u/ b0 J+ U% D' C9 q     / v2 J" T4 ]. W, n
    using System.Net; 3 r; g5 M  G1 G5 @, i  `. `4 a  C' b
     
' N% c3 ^: p2 T9 G. U    using System.Net.Sockets;
$ N% H* G: Q2 a8 i7 L1 l  c     
8 B& V) z& u* O: C, ?1 y    /// &lt;summary&gt;
) G$ T- z) M3 q: S1 z/ X4 q9 y     ! v3 G) `; O/ C; A
    /// 主要的类:ping   j2 y3 p# d) {3 V# ^$ u2 a
     ; l  f+ ~5 e' i6 L! a1 L' h2 S5 H
    /// &lt;/summary&gt; ! c( s9 b0 T  W: T0 b6 z/ q
     
+ x7 w  R/ N" o4 L, S' g    class Ping
# S. q- x5 N! u# ^' x# M2 k     6 b: l- a, ~0 H8 l% B' a2 h- l! y
    { 9 @9 r8 D3 G$ j* ?% J- V" E  W
     7 }& e, U4 x6 J2 A0 q7 }6 F
    //声明几个常量 5 K3 m" @% ~; E" m) e
     
8 n# }) f9 Q$ Q. |, ?" v$ t    const int SOCKET_ERROR = -1; 9 K* T* d* @6 C" D$ G1 s9 M- ^+ `
     
, O8 g4 m4 w; X; N    const int ICMP_ECHO = 8;
/ b2 f/ d7 J- J% t5 ]$ V     ( f1 A+ k( e5 ^& h; Q# ?0 J, e4 [
    /// &lt;summary&gt; . X/ E1 A+ l$ ^( A5 h6 T
     
' W2 w4 U4 b1 y" e) q3 T    /// 这里取得Hostname参数 # k+ t" J. G/ n7 B9 y
     
' B6 w$ V! W. S0 g5 ~5 w    /// &lt;/summary&gt;
& W! R/ w7 M9 V" Q& S     . A: a/ R( N. _! a# j
    public static void Main(string[] argv)
* T/ @, F6 r- g& I2 V( T     : J  E1 [/ |+ Z& T0 b
    { 0 J7 `, @6 `% b$ r' a! ]
     ! d; U, K9 m: p3 w. I" f: h! L5 o
    if(argv.Length==0) 0 n1 M# s/ d( r+ r8 b, y* @" q
     $ }# I. y* X8 X" B5 E! H$ _
    {
  P& q' c2 v* ~! P     " F. Q+ [8 l' y% x* N9 M' x
    //If user did not enter any Parameter inform him - R# P8 C/ S! J+ g
     / @  S  {  l, h4 j2 q; c
    Console.WriteLine("Usageing &lt;hostname&gt; /r") ; 2 L- i% v; @7 b
     2 k9 K* S0 W$ i* V
    Console.WriteLine("&lt;hostname&gt; The name of the Host who you want to ping");
% K  u; w* x# X* R     : W* i, N0 V. }0 I& N& }
    Console.WriteLine("/r Ping the host continuously") ; " U' _/ n8 V' N
     
+ Q$ l- P0 A. ?+ M* ~    }
9 E0 n: @7 m) R( f. s     * f% [/ o1 _( W
    else if(argv.Length==1)
$ v2 q) ?' P* }% k1 e     
; P8 G; a$ O3 f' R) Q0 f5 ^    { & @# c+ F7 M( W; _
     
$ v1 I8 s' w; [' l- _3 F, |/ [    //Just the hostname provided by the user 3 w. D5 [/ L. ?  \
     4 {0 U" [8 G/ Q% U5 g3 B, X
    //call the method "ingHost" and pass the HostName as a parameter
' ^# N) ]7 ?3 ?; i, _1 R     2 _1 f6 U9 f* C' i+ i; }8 P1 c
    PingHost(argv[0]) ;
. R( y2 q9 H5 H, {       e7 X) a! g( U! |3 f* B
    }
7 I& A! S' `; V7 c$ c/ Y3 j     
9 P; A; S# C9 I: m    else if(argv.Length==2)
3 N6 T" J+ w% ^2 k$ E2 X4 x     ! p) [3 w7 Q$ U  A: D9 L
    {
/ w8 d$ v3 A) V     2 _1 O+ z( B$ [6 q( A9 V- |
    //the user provided the hostname and the switch 0 k% i: d# E2 O) X" l3 f
     . X: p% ]0 ?% B3 F* V
    if(argv[1]=="/r") ! d; n* `( M1 p( X% o5 M
     
* ~* ~9 W- Z+ d5 K6 r; Y6 i& h    {
& z2 n. ~. W2 p6 b     
2 v# b* d1 j  u4 B. V) T" ?  d3 b# I- H$ {    //loop the ping program
" A: H: B( R% N     * Z5 j& e, _+ T8 t! J
    while(true) 8 ]1 _$ g4 o+ d# }. s0 X- i3 }
     
" I. h* i# |$ B$ q    {
. E* u8 y% F. v' p) \6 R: {" z" e' E     9 U' V$ M+ {- b* i
    //call the method "ingHost" and pass the HostName as a parameter % T7 f  E2 B; Q' T  X4 `* F+ G
     : ]! b/ |3 ^; q; F/ q$ t3 o, G
    PingHost(argv[0]) ; 0 O( Y* y% s0 l% Y
     
2 `5 [3 `2 A3 m6 X    }
& s8 v* |2 P3 W7 ]$ i/ `- x     + B. L# Z( L7 }0 M
    } 0 K' f, E2 }! o$ X; P! ]+ r) ?
     
! |( l, A$ H, Z! t2 j, X    else 1 P( t+ _. b& l- K
     
4 j4 R( s4 s0 Q, l/ [    { 3 d# _8 d/ i1 R( o4 ~1 K* s' X
     ! l% M+ X' h+ ]5 D, Z3 d! Z* i
    //if the user provided some other switch + c8 z; m: M% F
     
$ ^& S- p. P8 F: N5 ?5 M    PingHost(argv[0]) ; , o2 w- }% [! H1 P
     
, j' z  o! r% F1 [2 f; y. y  M' k* x    } ; ?9 |. A5 o# k2 W
     
, \2 e2 s! g. t6 l" s% B    }
& {6 j5 P9 J- n# O: H( x! E, S1 c     
* @7 v. |# p; Z0 U- F2 o# T    else
8 m, u* C; @3 H* y  b% g5 i! t4 o: V. M     
5 }1 t7 W! z0 S    {
8 p( r, K# U% S     
" d/ N( E! [1 C" T) z5 ~" ?" z* {    //Some error occurred 7 k" E( k. g% m
     1 }4 R0 c. M3 H: g
    Console.WriteLine("Error in Arguments") ; 2 A( J9 P4 p( G! |5 c& O* W$ @0 d
     - ?( q6 m7 x% n9 T1 M
    } ' P8 ~3 L: H! X4 u
     ( [/ c0 d: i4 p8 v: u1 H
    } : q3 L3 `0 V, J
     9 A0 I. B5 c- ?7 t/ j
     $ a$ ~2 I6 a  S2 g) \
    /// &lt;summary&gt; 5 J: e) u( M4 u. g! h0 f9 p; Z
     
( S& S4 b8 F& j5 g3 [    /// 主要的方法,用来取得IP, / m# K' y' K7 K" Q! d
     * z; f* }7 F# `8 @
    /// 并计算响应时间 1 ]* c2 S1 H5 Q* A  k, V- V
     
' e5 _  B3 g- U2 K6 v/ U7 B8 {" Q7 d    /// &lt;/summary&gt;
9 }! s) o% l( U     & V8 k1 Q9 M6 t" d% \
    public static void PingHost(string host) ! @, K* J$ f# Y. P6 e; O
     3 o) O5 I4 H2 T) K$ \3 |6 g
    {
3 w+ [! v: e7 n/ l; A# n0 ]     
: L/ B2 w! P$ M    //Declare the IPHostEntry ) E* m5 p# ~* I' a1 k6 j- i. L
     
3 n" `" s& j2 H% @( o    IPHostEntry serverHE, fromHE; 4 M  C3 `7 k( J8 I4 Y: X( g
     . G3 f& e! {* v) l
    int nBytes = 0; ; F# z9 @. [8 {/ V- n: m
     9 s  O0 y' M8 N) M
    int dwStart = 0, dwStop = 0; + n. l3 U& A1 _" ]6 N& |' ]4 ^
     
3 c" \- j! }, }% h" J) R    //Initilize a Socket of the Type ICMP 9 S- E& x5 @4 T) P8 c! S
     , }- {' H) h' O4 |8 {$ B
    Socket socket = 4 D0 s- u. V* T6 r# T  m
     - A' C/ X2 @; q3 M( H5 ~
    new Socket(AddressFamily.AfINet, SocketType.SockRaw, ProtocolType.ProtICMP); ' {' K' u( d2 V
     
/ b: [! I+ K% C8 M3 Z- P     ' O0 C. E1 x& C: C" g$ e1 e. D
    // Get the server endpoint ! T3 `6 v+ m5 e% G$ Z% G
     " v4 m2 v; W% m5 g* s2 `7 V3 n; {
    try % m% y1 S4 r9 m8 |/ {- I' |
     
' \/ j1 t  H) \- I    { 9 @( G* {0 }. a+ s. e3 I5 o, ?& S
     ! n+ ~4 t6 Y! F' F% j  N- s
    serverHE = DNS.GetHostByName(host); & Y4 d* o+ Q4 p0 |2 s
     
! F; }# `5 `' x    }
0 F" ]# x5 }6 ]  E& L/ @     ' c- q! V- U6 V) I6 S  @
    catch(Exception) & W$ D' T3 @8 N$ u7 B
     
! E; ^  r* ^  d# |; b1 _' A: j    {   z) a* J! W: O
     2 W8 k. U, F, w
    Console.WriteLine("Host not found"); // fail
$ l) P+ `: I$ W# V     % i; j% N. X7 E7 T' G2 z' y& v
    return ;
7 H( f5 L3 b: [     
% v0 c. \9 z# y/ b    } 0 ^7 m- ^5 V+ U% s+ R+ L+ ~
     0 i: `5 {, l( h  S9 `& Y" \
     
* N5 I1 E: U1 v    // Convert the server IP_EndPoint to an EndPoint
0 W7 j) ~( g5 \     
$ G6 y5 Y9 H+ Z+ ?) s% U    IPEndPoint ipepServer = new IPEndPoint(serverHE.AddressList[0], 0);
, }, I7 o2 B, l* ^6 z! y9 ~     
4 J3 p' j: ^& {2 Y& B- W    EndPoint epServer = (ipepServer); 4 V8 M! [, B/ g, A
     
  d% f% k6 B& u  j     
6 t8 v9 R7 F8 ^$ S$ C2 y    // Set the receiving endpoint to the client machine 0 W. j4 D2 o) p
     3 [# k- o2 T: J9 {: m, G/ O
    fromHE = DNS.GetHostByName(DNS.GetHostName());
8 }6 K0 i/ _2 {     
% ^$ `9 W" t9 h4 \; W    IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 0);
/ G* Q! Z9 u0 r( P( \     
+ k  a* Z7 v* l/ L% `    EndPoint EndPointFrom = (ipEndPointFrom); / G1 U7 b& n2 Q" ]: C# L  m
     9 P7 [( L' C# T! E) E4 w8 `
     + T& v4 j# w3 V1 d5 E
    int PacketSize = 0;
- x* l" I, J% _& Y& Y" r     6 A8 X% D8 g6 F5 M5 e9 |! A
    IcmpPacket packet = new IcmpPacket(); ( e  H) u/ @1 p, k1 o0 {
     ! l7 t6 j; s9 D" [: S
    // Construct the packet to send 0 [, y' {6 R. X
     1 T: N% ~7 ^0 ]3 ~* B7 Q2 u5 D
    packet.Type = ICMP_ECHO; //8
- [3 o9 N7 f7 q! m& O+ @/ K     7 t+ Y3 j4 _% R$ k! K1 o! S+ r
    packet.SubCode = 0;
) A2 h4 m7 _' H2 q  }$ I) A     
% U8 U. c' m6 v, U    packet.CheckSum = UInt16.Parse("0"); / a" b* s' e8 N/ m
     1 q% o& n# H0 _) `+ s! b
    packet.Identifier = UInt16.Parse("45"); 3 W3 n/ v1 ?# j8 \2 ^+ m  N  {
     & B3 ^$ M6 K4 ~2 @8 U) r$ @& o
    packet.SequenceNumber = UInt16.Parse("0");
  O& l9 O! `  \" ^3 Q     : x( s) q, w+ R% E" E% }4 r! I5 c
    int PingData = 32; // sizeof(IcmpPacket) - 8; 6 C  X) c1 {% S4 D% N
     
8 D" d" b! X5 M) y: A8 n    packet.Data = new Byte[PingData];
6 `* C$ ~; Q1 b7 D& G     
6 w6 V  t; s/ E4 c7 u    //Initilize the Packet.Data ( G. m; N3 S! u& P
     % p, d! u) y6 m1 v; v
    for (int i = 0; i &lt; PingData; i++)
2 @/ F8 k: y6 P! T. M     
+ B- v8 a  c0 j    {
7 t! ]/ R& L  p0 v0 G1 V     
6 ~+ p- O4 B/ p7 h1 p- r    packet.Data = (byte)'#';
' |" L4 U- Y. z' L     $ Y1 P/ _( u7 s! C1 t! H3 s5 Y
    } 4 m0 x5 M, ]8 N& {2 g- E
     * L+ B- ?; D, n  d. s1 g) l
     % `8 R! ]3 m! G+ f. I! ]
    //Variable to hold the total Packet size 4 o) C+ ~- N) R) |- }
     
5 h- |2 [. m3 ^( g    PacketSize = PingData + 8;
& c0 ~0 i. {2 X; j5 V: F     
: ^2 |9 q3 I$ W5 p- f    Byte [] icmp_pkt_buffer = new Byte[ PacketSize ]; ; h/ Y, a; K/ I5 h" c
     
  }6 }/ a$ l& s4 ~) @% U5 ~    Int32 Index = 0;
4 Z( M4 Y& E3 j& J     
# }; k# j( ~' c" m    //Call a Method Serialize which counts
* {6 `2 l# D; S3 w     " @9 H) q% I% O/ x5 o
    //The total number of Bytes in the Packet
( Z/ S" }  {2 P; u$ _( X8 h     1 i7 \" h+ ]2 k8 o$ [3 m
    Index = Serialize( # Q7 b- T) H# m* e+ A& S1 y
     
5 O  Q) O/ p# Q. m/ N    packet,
7 [7 y, u& @( B0 S     3 j% S  e+ h) m7 S
    icmp_pkt_buffer,
5 ?7 g$ y% n$ L" m( J- U# A( ^     
: ]$ p5 u# m, F  n3 ~    PacketSize,
: k: V1 m: \! L     
8 X. K, W7 X* t) s% U    PingData ); 5 l* ~/ N8 S+ R' L
     
# x- w6 P3 {  f0 @2 r7 i    //Error in Packet Size
% D( H0 b+ e/ K( F0 `/ w     , ]* I/ t, m8 F/ J7 G  k, M+ M; ]
    if( Index == -1 ) + [$ }- H6 G% J
     . A: \. f% v1 {' \: r
    {
9 _3 L* U, a" P3 c     , _  A& G% L( N8 k! \6 H
    Console.WriteLine("Error in Making Packet");
" @% S: L  j, L  p9 I5 A, h! |     ! g2 A- \$ A4 A
    return ;
$ s7 |3 L" Z/ J$ t! s     ' ?" l- y2 Q6 i% o1 e
    } ; i! j5 H6 j/ X' V* y
     $ k0 _% V! ^. T& [' X
     3 x) O- ?0 m, \2 v& z' j
    // now get this critter into a UInt16 array
1 c0 k1 H4 z/ m' r0 V: I2 b, I     3 ]1 t' r4 @. ]3 U- z; F6 x4 w2 a
     
1 u0 y/ d. j0 C" U- N    //Get the Half size of the Packet : h3 u" G( }% {) }5 Y9 `0 x
     
: U- b4 Q1 J4 L( a: f2 B' @/ }    Double double_length = Convert.ToDouble(Index); : f  d+ e, W3 [( M; y  R
     
) k, M' z1 }' l8 `; C, ]    Double dtemp = Math.Ceil( double_length / 2);
5 D$ A+ u6 Q: b8 ?( K  {  ]     # Z1 j$ s; N6 _$ w' V1 @4 R& G
    int cksum_buffer_length = Convert.ToInt32(dtemp); $ z( I, y+ K/ X2 U% {1 }; ^% I
     
* g+ Q9 M0 t% q0 G9 u' C    //Create a Byte Array
4 }% H: ^- e+ G# p     
( K3 G; O/ W' J$ K3 Z6 x    UInt16 [] cksum_buffer = new UInt16[cksum_buffer_length];
0 P0 x; C+ l( T7 @- `6 ]     ' _4 m$ J" |3 o( d% B6 X
    //Code to initialize the Uint16 array
/ {, G$ C- R) C. s" L     
) B. I2 @1 T2 _7 W9 }! K    int icmp_header_buffer_index = 0;
5 p- f8 A& @7 C1 M" _     
) i6 @! d2 v2 G& M" K) T0 }    for( int i = 0; i &lt; cksum_buffer_length; i++ ) {
* y9 |& L9 @2 }     1 k- [/ Y* B; e+ D
    cksum_buffer =
4 O+ q% z$ U4 h     ( z& Y! U1 j/ s
    BitConverter.ToUInt16(icmp_pkt_buffer,icmp_header_buffer_index);
; Q7 S4 C7 C6 T, j% f9 i4 P     . V; m8 e" Y+ [$ z/ N# P
    icmp_header / W# K, y3 l' h6 R- [
     
/ u- P& T# _: [" h! F    以上代码可以直接在时代互联的ASP+ASP.NET 虚拟主机上直接运行,欢迎试用 !到<a href="http://www.now.net.cn/host" target="_blank" >www.now.net.cn/host</A> 订购后可试用 !
. w$ |; d* v* |8 y4 y/ W     1 y6 H) _2 i7 u; Q0 ~8 ]
     关于ASP+ASP.NET高速虚拟主机,也有同时支持JSP(JAVA) 和PHP的综合虚拟主机。也可以试用,其他问题可以有免费网络电话咨询, # u/ Y  K) T5 R8 x
     欢迎随时联系 <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A> </P>; A$ s/ p8 m0 t$ G6 W
<>时代互联(<a href="http://www.now.net.cn" target="_blank" >www.now.net.cn</A>) 的虚拟主机,免费配有 CDN 镜象网络加速 ,送域名 邮箱,流量访问系统,留言版,计数器!
) u7 o8 }. Z+ C- m, v3 T; H     / {6 u2 @: C" o/ O; t
    虚拟主机在线订购试用,请到: <a href="http://www.now.net.cn/host" target="_blank" >http://www.now.net.cn/host</A>
6 I0 d2 [, @0 z- L0 ~% A    域名+空间的优惠套餐可见 : <a href="http://www.now.net.cn/special/" target="_blank" >http://www.now.net.cn/special/</A>
, T4 A3 l' C4 C+ f     
: c+ r2 ]8 k- {) h1 d( N    如有问题要咨询,时代互联提供免费咨询电话,点击这里: <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A> 7 n  Z, d" H' Y' E
    QQ 联系 :405881840 108786612 </P>2 ]8 W  k, H1 d' `
<>----------------------------------------------------------------------------------------------------------------------------</P>4 o1 P( O2 A5 n5 q/ v) C
<>  T5 g  D5 z7 |
       主机租用,折上有礼,租用9折优惠加送价值3600的CDN 主机加速器 !详情见: <a href="http://www.todayidc.com" target="_blank" >http://www.todayidc.com</A> 0 X; |; |4 Z& i
     * |5 n7 q! |+ m0 K1 z0 ]  ^
    企业邮局—— 立企业的统一形象,自由增加帐号 划分大小,不限制附件大小,繁、简、英3种界面智能显示。强大Anti-SPAM反垃圾邮件使用专业杀 引擎Anti-VIRUS,在线实时自动杀  ,价 超低! <a href="http://www.now.net.cn/email/" target="_blank" >http://www.now.net.cn/email/</A> 3 E" o4 x) R: h$ ~- [4 ~% K
     9 U+ S3 o% |0 ?0 Q
    智能建站——3分钟就建立了数据库功能的网络交易平台,只要填写公司的资料或图片,就可建成网站。免费试用到 : <a href="http://www.now.net.cn/auto/" target="_blank" >http://www.now.net.cn/auto/</A> 5 S9 a3 m) S2 c8 T( G+ o5 _, Y
     
  V, {, k& ]4 z$ s! W    繁简通—— 300 元就给你一个完全同 的繁体网站,方便开拓 外市场!免费试用到: <a href="http://www.now.net.cn/fjt/" target="_blank" >http://www.now.net.cn/fjt/</A>
. R7 K7 ]& y- c5 c9 J0 Y4 w     & e, @- b- ?4 M' Z5 f& z8 R/ O
    动态域名——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-25 13:16 , Processed in 2.905083 second(s), 58 queries .

回顶部