QQ登录

只需要一步,快速开始

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

Asp.net编写的PING工具

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-14 15:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>    Asp.net编写的PING工具 & @8 N# j! W0 Z7 u% s' ~
     
/ }9 Y2 e) e8 Q5 V' H) O" k/ T7 z/ f     8 W) \* k3 {, Z3 |
    PING 是一个用来检测网络连接速度的工具,它会在本机和给出的远程主机名之间建立一个SOCKET 连接并向其发送一个ICMP协议格式的数据包,然后远程主机作出响应,发回一个数据包,通过计算发送到接收数据包的时间间隔,我们可以确定连接的速度。 3 ]' {8 }: J$ b3 y( d, z
     4 Z/ _2 p; f5 T% K, K: d
     
4 C1 o# T- T, O( ~7 |     # [2 n- V7 f* N% q& T& r8 |
     此程序可以使用于 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>
3 @! s/ C1 D* _. H     主机+域名+邮箱 的优惠套餐,可以见 : <a href="http://www.now.net.cn/special/host.net" target="_blank" >http://www.now.net.cn/special/host.net</A>
9 w3 T: i+ }/ O( U; d( k     / V% x& X- @3 p. ?! _/ ?0 }0 x! |% R
     
$ y+ y* ?- [+ Q2 F     
  \5 v! c+ x/ n4 D- |  v; Y6 i0 }    使用方法 ping &lt;hostname&gt; [/r]
- c! O6 O" d" W* Y1 F# O     8 f. J8 }. j* {* Z) r& y% U
    &lt;hostname&gt; 主机名 / n; f5 P9 d& R
     / v- B0 T* [* ?( E- S, \, g; _
    [/r] 可选属性,决定是否连续的 ping 远程主机。
( Q3 W+ l. @1 O! J. e     : M& W# O4 q/ \2 x+ O& r7 k1 o8 P
     / b0 C1 o% G( C8 a: ]' f/ P% W9 C
    下面是代码:
' T* @; Z1 |7 b' P  r     
& a; \) d$ C' o& Q, @# @2 ?    ///ping.cs : o0 r4 m3 t1 @% X) a# }
     4 t+ w( Z5 y) g, I
    namespace SaurabhPing 1 K' _7 C1 v0 \4 h
     
( G$ H) X9 U3 }  w  ^    { + Y" Z; W/ Y" g* g) {
     
: i: t# F: s  g    using System;
% X+ g6 Q7 ?: _+ T5 q$ }     8 ~: A' `4 z) }
    using System.Net; 0 ]# R! b0 a) b0 E! d6 Y/ Q5 H
     
5 ^" x6 z& {6 K6 M8 ~2 ]7 N    using System.Net.Sockets; ! T7 Z/ Z8 |+ v4 R: M6 r* V
     
3 m, O$ m& S; z! _$ H    /// &lt;summary&gt;
2 }8 x* z. q7 w! Y     
" F7 P" w8 W4 S! G    /// 主要的类:ping
4 F3 B9 [8 I" g& M5 v, }. ]% I     ) q. K1 }, m* ^* m9 v
    /// &lt;/summary&gt; ' V4 s8 z- u: _
     
, ^8 A& Z% b8 f6 p/ C    class Ping
+ T$ p7 m, H% M1 D3 v" U     2 C" t: t1 u6 Q: @- W. F
    {
+ D! T) }; [( {; |6 V! B1 I     + E8 m- l! ~+ U: c: H
    //声明几个常量 2 @& C: U, D- v5 ]1 d3 X' C
     
4 w+ W0 G$ P* d$ |    const int SOCKET_ERROR = -1; 0 ?5 B  q7 i8 J3 c) u
     
0 X4 x1 S" j5 x/ u7 m) M    const int ICMP_ECHO = 8; 6 ?2 Q& b; i" O! s/ x' x$ R
     " S8 T0 @3 X  l) _/ h
    /// &lt;summary&gt;
+ X, B8 Q- o/ u1 i( ^9 m  x# i     3 }5 s  \: }& b! h7 e
    /// 这里取得Hostname参数 * I9 u" {! b% R- L& P6 H) w% N. u1 {
     
& T' ]$ _' W7 _. @9 `3 U5 N( [    /// &lt;/summary&gt;
: ~+ u& h- ?0 q1 `* P- C     
) ^3 j" u3 I6 k. u" l! e8 U; x/ Z    public static void Main(string[] argv) $ k( `3 R, s8 f9 ^
     
# Q3 D9 x# C% D4 ?4 v/ c; {/ r    { / t8 u# S3 A6 z, ^* e
     
) o2 N( Z7 S5 K' \. d. L    if(argv.Length==0)
( b0 Q' Z* J$ t) o' U( V3 Q4 ]  N2 I     
) T2 C* \( [& j5 g8 H    { & F. m9 P3 }2 m+ `2 `! }/ \
     
- ~/ Q# a6 }4 z* @, H! m    //If user did not enter any Parameter inform him
) _4 }) @7 b$ N; B* B) `     . q$ z2 o# e7 E5 J/ j
    Console.WriteLine("Usageing &lt;hostname&gt; /r") ;
- [- {1 e& i# [) n1 x     
( P& s: G# s  g1 N# q    Console.WriteLine("&lt;hostname&gt; The name of the Host who you want to ping");
% Q+ y* I: _' l, ^) x2 ~     
/ Q+ C/ q. Q' ~* T: Z% e    Console.WriteLine("/r Ping the host continuously") ; / x& i  M0 G- U2 S- d' I. ^
     / P9 @; U0 s* ?  l# Q  Z/ n
    } 6 T8 w  d+ L! s, W" P7 b
     
/ `7 j" |7 n5 m3 H" Z    else if(argv.Length==1)
6 a! I7 L4 r/ a. i, r5 s1 R: X     / F( |4 G7 _* i: \* ^6 J
    {
. S  e  a6 z0 H* c     
5 I' }$ x$ }6 _$ I  z+ }/ d: E6 ]0 o    //Just the hostname provided by the user + l# e" }6 z# f1 n( Y2 m
     ! p) E& [8 l, ~- {3 B4 ^
    //call the method "ingHost" and pass the HostName as a parameter
8 m; H. ^% k3 X7 E8 B; A% r# t( ?     
( A# \8 y0 b* @    PingHost(argv[0]) ;
" b, u2 V/ n5 x+ ~, f     1 {: d% l) L4 J; Q& c& {
    }
$ D$ @7 D" d% M; z3 W     " h& F) N9 W/ b/ E. i
    else if(argv.Length==2) 1 \9 m9 p) N7 e7 F+ j6 u2 w
     4 O* t5 n9 C' J) w& N8 M
    { ; `( V% X6 O. L& X) v1 k
     
9 t  G+ ?% o; Q+ ~  G+ {    //the user provided the hostname and the switch 9 R, K8 x5 `1 S7 t- V7 Q
     8 c- T1 {# e* _- e
    if(argv[1]=="/r") 1 z7 B  N1 R: b+ Z# o& c
     5 ~: D& U) A  X% Y  g- Q
    {
* u! X) V1 |1 a1 Z: s# ]     
% Q" X' U: [' O6 ]* h; V6 W! x    //loop the ping program 1 D/ T1 l  \9 n3 `
     
& [7 w$ T) D/ _" S& X$ b, t    while(true)
3 \  u! m. `, a" P     
2 i; `1 D* ?& M  F    { * z0 h  y+ R+ V& @$ K
     
8 o& e) {% G# R, O# {    //call the method "ingHost" and pass the HostName as a parameter
  J( A9 H0 v( s. V2 z0 b# p; |, H     ' O# v" w+ a( y# Y
    PingHost(argv[0]) ; 6 I. \+ N" M6 Y! Y2 `( y2 V8 H9 H
     1 D2 n6 f( ^$ G7 n$ `3 w
    } 8 J' a  W0 q( ~
     ; k; n; f! ]( g3 w
    } 5 Q! V% {$ c7 h8 j7 S
     
& ~6 S  I! Y/ J- n    else * f; Z% g) z2 h. r6 T* H
     
, t% [6 i, W- o. B    { : j7 c  S. q: F  I
     8 D4 p) u) }0 J: [3 c2 [+ I
    //if the user provided some other switch % H) r6 d" v+ v: s2 t) ?
     0 `; R; r- v; S* e3 {
    PingHost(argv[0]) ;
$ s  f9 W5 \7 G# L     ; d) f9 z2 K5 J) N
    } 8 J* }0 r7 u, ]1 P8 A
     
$ L  _3 T3 @' n# W0 ~7 o, i# b    }
( |0 r$ u, x& u: Y+ R( Q- U     
+ \5 y0 i. J5 X$ @    else - Q: Y1 s* u" k8 c" i" i( G
     , h0 K3 B  s( \4 o8 s
    { 0 I# r$ u, G5 x5 F) R
     8 \$ F. b2 a1 B! k* c! I+ q8 k7 s& f
    //Some error occurred
) }; F" `8 j; m5 O     % l2 @: E+ X. g6 R9 K, C$ `: ^" s9 y" {
    Console.WriteLine("Error in Arguments") ; ' i& D. U+ V. J
     
- G9 k% Y/ C, V- x    }
9 W9 F, o+ M% M/ X" w* a& a     8 D) }' O5 h' o6 _
    }
3 b: o2 D/ J1 w* F6 L& g( M; h     
! U' P+ j$ n8 e* g3 L     4 ~$ K* H* W- H) q) H: r
    /// &lt;summary&gt;
$ Q4 E: Z2 u% ?( p     
+ N" f' ~, x+ ~# G- V    /// 主要的方法,用来取得IP,
- @# I  C' T) q9 w     
; D& ]4 X$ f2 P% y0 s    /// 并计算响应时间 * t7 e5 G3 F( S6 u& ~1 \7 W' y
     ; n  t4 S+ d/ h+ F- ^5 a$ j6 h5 c+ [; m
    /// &lt;/summary&gt; % t$ F1 I4 W" A
     
4 v$ Q  S1 H) k4 r: _    public static void PingHost(string host) 6 e3 ~  ^+ Y" s- C
     
+ @9 S# `9 v4 G9 Q: S0 k8 a    {
* d- o' `9 I( k: Q* K* Y$ ]     + m# |! T# l! w# `
    //Declare the IPHostEntry # r1 \( \5 D" R* c% B, {5 ^3 a
     8 a& }+ c4 l6 w9 J* }% P5 O
    IPHostEntry serverHE, fromHE;
( U- \$ D( U% F5 b9 I8 S& g+ f2 _     . ~2 X, y4 ^4 i, w: k! P$ E/ N
    int nBytes = 0; $ B  H% h* _" U6 E, i, Y" A7 q
     
9 w9 F# a; ~( p) x( O( J2 h    int dwStart = 0, dwStop = 0;
6 q0 l2 Z; U6 U3 y     ; D# W1 r4 `) e
    //Initilize a Socket of the Type ICMP ; |" @1 x8 Z, R& Q2 l# O1 n
     
& |' x) z2 m9 h8 X    Socket socket =
) F1 y+ W, m9 b- ?5 A( i0 d  |     
( i5 T- N. L5 H0 B& T. J    new Socket(AddressFamily.AfINet, SocketType.SockRaw, ProtocolType.ProtICMP); : G. H3 s! |0 L; h
     
5 P; V/ ^2 N( G8 s     / n9 i/ X6 t6 n# f3 y
    // Get the server endpoint ! {( H% ]0 ]& N
     ' G4 C8 _: t% H5 P4 o
    try   z9 p4 {* Q2 H* W. _9 k7 k  E5 ~$ K
     
5 s) {+ u3 {% O+ ]9 C' N9 F    {
. u3 f1 p, f* p2 j7 R: R( n# X     
8 h7 F8 E% h# Y8 r  }2 G6 h    serverHE = DNS.GetHostByName(host);
8 m7 n' S+ v1 ^0 a; e6 B     
5 \' O! a. p  {* k7 m    }
+ M' \6 e1 C& Z/ y, [+ B/ y& j     9 `( x. m: K* N% F  l
    catch(Exception) ( L. \1 c) i" n+ M7 |
     & A- Y6 E$ i& M
    { 4 m* }+ n  J+ r6 K& N7 e5 n/ h
     - u( }3 W9 O' A8 L3 v
    Console.WriteLine("Host not found"); // fail ! q7 {4 K* ]; E  B4 T$ ]
     
; r8 f# \& M- `; I' i* v) _    return ; - j% |* a) R" \5 L3 ~# L$ ^/ h: T
     $ `! S" t, b& |% b
    }
$ x1 S* w$ y0 }3 _4 m; C) D     5 j& F2 J% r1 W7 V
     
  Z" |# v' C- E1 \' G    // Convert the server IP_EndPoint to an EndPoint
; E8 \- N7 l# J( v     
- V' f- c# B' Z/ J- B    IPEndPoint ipepServer = new IPEndPoint(serverHE.AddressList[0], 0);
& C8 T& D8 z' Y. o* [. G     
- h, j$ \. m5 e, [/ q& [    EndPoint epServer = (ipepServer);
; O- \9 X7 e; ]0 h8 Z4 f     
/ d- ^0 W  i) H6 v( I& Y2 }     
' o* k8 g8 \/ v    // Set the receiving endpoint to the client machine 6 t* Y. J" A3 t+ n1 d& S
     3 j* u6 Q; }4 m- Z% G. X$ i
    fromHE = DNS.GetHostByName(DNS.GetHostName()); 3 K1 N# M. y- q% Z7 t
     
7 X/ `" c2 k! x0 s  q# n    IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 0);
0 m2 }4 }  I) K, V4 T: y8 E/ V9 x     8 [: `6 u$ H) r9 V! l" P" C, H
    EndPoint EndPointFrom = (ipEndPointFrom);
! t& e2 E+ W/ m" E     3 z: w: E  M8 j  Y
     
2 F0 _9 M* z3 w/ D    int PacketSize = 0; 7 G5 {5 h9 w6 h
     
. c7 n, k* i. y0 \7 x    IcmpPacket packet = new IcmpPacket(); 6 ?0 p9 T3 N( o$ S; K
     $ b; N0 V  G* Z0 F
    // Construct the packet to send
9 G: F& Y5 L9 y$ F, e+ }* e     7 S, {- w' l( I; u& u
    packet.Type = ICMP_ECHO; //8
* K0 o2 P+ Z3 z9 P) f$ R7 O     
# x0 e' m' n4 ?+ q" h! E    packet.SubCode = 0; , c7 I" Y8 P- w8 Q0 d4 j
     
# S( t" v& B' N* v- U3 Y! [    packet.CheckSum = UInt16.Parse("0"); , h; I3 q5 n% X- F0 X! @9 A" O
     
+ K* ^5 [  W- x; p3 D    packet.Identifier = UInt16.Parse("45"); : W; ?* P9 h: ~: J1 E% {
     ( G7 @& v. J$ D) W, J
    packet.SequenceNumber = UInt16.Parse("0");
8 l! e8 y# P' a     4 @5 D  j4 j& h  ?& M
    int PingData = 32; // sizeof(IcmpPacket) - 8; ( M! S- A3 i& z! k
     
2 e0 W, c; O4 L. M2 G+ z) o4 r    packet.Data = new Byte[PingData]; : `$ H9 {3 F) \% B: F
     
# |; U! }- X2 D8 C# P1 S$ c    //Initilize the Packet.Data + B; c1 A% u: w, \
     ( `3 Q0 I* O9 Q# h$ ~2 E
    for (int i = 0; i &lt; PingData; i++) 4 d' n2 Q- Y' `1 E
     7 `" e; C: G/ Z6 U+ ?: P
    { 5 R( B% U7 @+ J' X* i; Q
     
" m: O& F, A' }# p    packet.Data = (byte)'#'; 9 \; m( Q: @0 z, p+ w3 f/ _0 G
     
6 F" L+ g9 C8 d8 ~    }
' u# k2 Q' v6 b/ A$ j. _$ e     
* i8 H! A( @# v( ~$ @3 ^. Q     
3 d" X: ~. B- z  ]; Q    //Variable to hold the total Packet size
4 |# _" x6 T0 K+ g     , f  G& f8 q, h# e
    PacketSize = PingData + 8; $ x! O7 }- q8 t8 |
     
: [, S' ]. e& t4 ]% z: p+ _$ |    Byte [] icmp_pkt_buffer = new Byte[ PacketSize ];
3 w$ ^7 u9 c! E  R0 v3 W     
6 v! L) I7 `0 B7 U* ]    Int32 Index = 0;
- }0 X/ j2 g+ t" T' x4 V1 V+ `     ) @% y; N# J& H: R
    //Call a Method Serialize which counts % v6 ?  w8 l; k) M
     * u4 P4 F, D3 I; w: {% w
    //The total number of Bytes in the Packet 8 Q8 e- A8 P% V* U' |# M
     
; i! V4 q+ h; I$ Z    Index = Serialize( 5 r$ d$ d% ]7 P& e
     / O7 b1 V9 Y( h  I
    packet, 5 b. Z: B3 ?/ s$ q
     0 h4 f  }8 N, V* a
    icmp_pkt_buffer,
7 ?: z6 [+ f6 a. B7 M0 ~' W9 K     - @! M8 Z4 N/ G. c
    PacketSize,
4 w- X. D. _0 a5 F     
% N6 Y  Q& S% A# j' v; X4 w' B    PingData );
1 [/ r, ]/ q: Y- W     
- \+ z% l+ s6 r& Q0 d: K3 Z6 B    //Error in Packet Size
  z" c2 k+ P% A3 H9 Q6 L     . A- g  [, {( ]$ x$ w
    if( Index == -1 ) ) t: V  M5 Z& I& `" A" M$ S
     
. {# v2 ?6 i. K* s" u$ f( ?4 ?4 o    { - w5 a2 {3 O1 \/ J3 A
     
3 Z) k. v' O: H; Y$ T    Console.WriteLine("Error in Making Packet"); + y3 T. }) u: m7 G
     
2 X, K' |1 C- T, L" u3 y    return ; 3 o& {. H. S: \9 U0 s: f( |
     * R! ?/ ~( ~4 T' B' e
    }
+ ~) q" ?; ^: G  w( d7 a# I     $ D' @9 u: ?' ]+ c, J" {/ C
     
% A3 ^0 B8 ]4 ~9 e$ B" o: l! E    // now get this critter into a UInt16 array
0 f" X3 n, h' y1 w: c     
  h0 ^4 F, {2 v5 E8 p     ' e7 G& V# a& R& n+ g7 L# z6 P
    //Get the Half size of the Packet
5 x; U- F% e& c( |9 k; n) d+ L% @0 ^     ) t  L( o+ C0 q/ u* P+ K( m7 W
    Double double_length = Convert.ToDouble(Index); 7 H: i1 W, c: n( H# {9 K
     
# T9 ]  X$ A% b7 c, I    Double dtemp = Math.Ceil( double_length / 2); 5 {3 ]8 h- \# f/ H! T
     ! q0 K/ f( W" a3 P1 L
    int cksum_buffer_length = Convert.ToInt32(dtemp); " L: F+ v  x9 D5 N$ x
     5 f1 X' P' V: T# K, S4 m
    //Create a Byte Array ( ^' E' B4 i3 @! r
     
' ~5 c, ]# I/ T    UInt16 [] cksum_buffer = new UInt16[cksum_buffer_length]; 2 t+ b) S7 _( k' s* d( v2 T
     5 o% Y, Y: Q- {+ M! r
    //Code to initialize the Uint16 array ! A! P: F# N  U  v2 T4 g/ S; F
     3 G4 E: p) h. E2 g, A7 [1 q
    int icmp_header_buffer_index = 0; . f2 k( W/ T% n5 q
     - o' x- D" _2 |' H5 g9 x
    for( int i = 0; i &lt; cksum_buffer_length; i++ ) {
2 a* S! L9 Y- J. Q. O4 R     - d- b+ q' q, ?
    cksum_buffer =
' x5 A  M) f# w3 a  `: e     
" K5 \9 s/ S% L    BitConverter.ToUInt16(icmp_pkt_buffer,icmp_header_buffer_index);
( M5 ^5 Z" P9 Z4 e$ c     
$ _  L! m& Z$ U( V5 w    icmp_header / H; `% t$ E+ q6 f/ l+ |3 D; `
     8 R( r7 e5 E6 @( v: i
    以上代码可以直接在时代互联的ASP+ASP.NET 虚拟主机上直接运行,欢迎试用 !到<a href="http://www.now.net.cn/host" target="_blank" >www.now.net.cn/host</A> 订购后可试用 ! . T  V' y# d# A) Y
     
6 |& Y  Z* a+ C3 F$ d     关于ASP+ASP.NET高速虚拟主机,也有同时支持JSP(JAVA) 和PHP的综合虚拟主机。也可以试用,其他问题可以有免费网络电话咨询,
% w! m0 p8 s6 m* Y; J) H# d     欢迎随时联系 <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A> </P>8 n0 e; ]( y, X! j- q( z  \2 j, v
<>时代互联(<a href="http://www.now.net.cn" target="_blank" >www.now.net.cn</A>) 的虚拟主机,免费配有 CDN 镜象网络加速 ,送域名 邮箱,流量访问系统,留言版,计数器! 8 g+ m+ B3 Q2 y/ h% W
     3 `+ i3 C) y; j7 Z0 r! ^
    虚拟主机在线订购试用,请到: <a href="http://www.now.net.cn/host" target="_blank" >http://www.now.net.cn/host</A>
9 ~' A3 Z5 A% w' ], l    域名+空间的优惠套餐可见 : <a href="http://www.now.net.cn/special/" target="_blank" >http://www.now.net.cn/special/</A> - d# j9 ?/ d& f4 ~$ H& k+ z
     
$ i7 d! x! y* y* U  k. f! j# ^1 H    如有问题要咨询,时代互联提供免费咨询电话,点击这里: <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A> $ ]# C" r5 F8 V, ?  g) l
    QQ 联系 :405881840 108786612 </P># D4 B& h. y3 s7 q3 V9 t
<>----------------------------------------------------------------------------------------------------------------------------</P>" b. r& S3 Q* b7 ?0 U+ K
<>* g' G& Y2 v3 L  ?4 w$ V
       主机租用,折上有礼,租用9折优惠加送价值3600的CDN 主机加速器 !详情见: <a href="http://www.todayidc.com" target="_blank" >http://www.todayidc.com</A> $ k* N6 f1 Q$ `% T
     2 a$ {) _9 U! w' j0 k$ W8 U
    企业邮局—— 立企业的统一形象,自由增加帐号 划分大小,不限制附件大小,繁、简、英3种界面智能显示。强大Anti-SPAM反垃圾邮件使用专业杀 引擎Anti-VIRUS,在线实时自动杀  ,价 超低! <a href="http://www.now.net.cn/email/" target="_blank" >http://www.now.net.cn/email/</A>
( G; j% S- w0 x: u5 l. [     0 P, Q, u. U7 J
    智能建站——3分钟就建立了数据库功能的网络交易平台,只要填写公司的资料或图片,就可建成网站。免费试用到 : <a href="http://www.now.net.cn/auto/" target="_blank" >http://www.now.net.cn/auto/</A>
9 `- [- I% U8 }     7 w3 B+ b* H) ]: T
    繁简通—— 300 元就给你一个完全同 的繁体网站,方便开拓 外市场!免费试用到: <a href="http://www.now.net.cn/fjt/" target="_blank" >http://www.now.net.cn/fjt/</A> 0 Y; `: L1 }! s+ w- K
     
' p: f7 J: C( f' I) p5 `' C& H! 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-4-20 15:24 , Processed in 0.454791 second(s), 58 queries .

回顶部