QQ登录

只需要一步,快速开始

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

Asp.net编写的PING工具

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-14 15:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>    Asp.net编写的PING工具 ( G* x% c4 @2 I4 r
     4 a/ F1 w; V! X6 A
     
6 |1 P  n, Q1 \$ B6 ]    PING 是一个用来检测网络连接速度的工具,它会在本机和给出的远程主机名之间建立一个SOCKET 连接并向其发送一个ICMP协议格式的数据包,然后远程主机作出响应,发回一个数据包,通过计算发送到接收数据包的时间间隔,我们可以确定连接的速度。 1 A1 Q* S3 O0 q1 {4 P' A
     
6 ^6 E1 J# ~% Y! ~( @% d6 G     
9 m' I3 X8 I9 X: V: u     " K# d5 D# S% k$ s, S
     此程序可以使用于 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> ( h  }; F- N) {1 t7 ^( ^
     主机+域名+邮箱 的优惠套餐,可以见 : <a href="http://www.now.net.cn/special/host.net" target="_blank" >http://www.now.net.cn/special/host.net</A>9 B' p# r! ^8 [6 c, m# a
     
; d7 R+ L' n" i5 N- f$ r     7 ^. q' f! q( q* q/ E9 C
     
1 f7 X% p. d9 Q/ Y* O' R  C    使用方法 ping &lt;hostname&gt; [/r]
* F3 _9 `$ m2 `. _     6 \$ K/ C: i# {' D/ z+ s, B
    &lt;hostname&gt; 主机名 . w1 W: R' i4 P: U. P& I
     : i; T! Y" |/ b/ n4 n& o: b% u
    [/r] 可选属性,决定是否连续的 ping 远程主机。
( a& e9 \) j) P  F; c, z     
. j2 p) _) O  F8 E2 U     6 D  v8 P7 U% Z
    下面是代码: : N8 }/ j. Q8 F
     * G7 j3 a/ e, O' S% {
    ///ping.cs 9 M# D9 Q) ^3 G* W3 E
     9 P: k( P- i# ]
    namespace SaurabhPing 6 j7 P% H- {: n3 X) r! Z7 x/ q6 B
     
" x0 J, L& J3 n% T0 o    {
+ r; u1 m6 r: i1 h' t* j! T& h2 T     2 T1 }5 _. |& t; l# @8 C3 X+ g) r
    using System;
# J& i4 |/ [& c     
; j) z0 G% z  _0 Q7 t$ |    using System.Net;
& w6 I) }3 _" L& Z. ~     ' o* c5 V: l! \
    using System.Net.Sockets;
5 H, B2 u5 q5 S8 Q- x/ {     0 N; @, E) a( }9 s
    /// &lt;summary&gt;
3 z% F) F  F1 Y8 H. X/ A, b     
9 A+ e  u. e2 @! r0 ~. n, [5 @    /// 主要的类:ping
. B9 h1 j: r5 p7 ?3 [     & m0 O1 D' T/ J- _& c0 h
    /// &lt;/summary&gt;
+ k/ E6 {  |- ]     
) x4 n" U$ T7 Q& N. S; ^    class Ping
1 x2 g9 O# t6 q3 ^6 x; j1 s6 j     
5 A/ j- C' q2 w- Y. {8 v# Q    {
0 ]. I) Q$ W0 E8 t0 h7 t) E     0 x* U9 x( A& n$ l( m
    //声明几个常量 , M( n9 L* z- B2 c  H
     
% e- X3 ?2 ~9 |    const int SOCKET_ERROR = -1; 0 @9 @- T# J6 K" |
     
! T$ O* C( I4 J3 n$ }9 N    const int ICMP_ECHO = 8; ; y0 s: c6 n# U/ x
     
/ J* y" J& [8 w6 P) A: v: ?    /// &lt;summary&gt; 8 \( L+ L& {' j7 }0 }" q
     
1 e4 S* b6 L- z4 c9 P- b% E( d    /// 这里取得Hostname参数 : a6 W8 U' G; b
     ) l3 z4 w4 C# Z  Q6 z/ m1 w
    /// &lt;/summary&gt; ' A! D$ n* }- j
     
. t) d+ ^5 N2 Q, k    public static void Main(string[] argv) - R# l, j' x" s* L) D
     
/ r' |" @% }: T6 k    {
0 J% T( q5 ^1 j9 D) J0 l5 l     , z- `) C1 U: i% M
    if(argv.Length==0)
5 D& @. d- M0 E, j# G     
. U# `0 J! x/ f  W) B/ u; v    {
( u' _8 M2 g( o) Z/ u     
1 N1 b3 g8 R8 a( Z+ ]2 a    //If user did not enter any Parameter inform him
+ E3 z) C2 z+ }& q: V     
* M5 U  B8 N; I# Y7 T; k    Console.WriteLine("Usageing &lt;hostname&gt; /r") ; 7 G6 B- Z( D5 H; o
     
" m$ L6 n, x8 r1 b* \$ ]    Console.WriteLine("&lt;hostname&gt; The name of the Host who you want to ping");
1 H5 F' T; w! Y9 n6 [) w$ G+ A0 i     - E6 I! W: P: i: @3 H
    Console.WriteLine("/r Ping the host continuously") ; 3 x" E; W1 i4 u* P8 Q+ D) n
     8 S1 |3 W- i8 j( c1 y- E
    }
8 c! p2 N* X5 I8 q! S* I( ?1 X. ?     % d/ o. x0 f0 `* ]5 ^0 r
    else if(argv.Length==1) * _5 a! i/ t9 p( |" l
     
8 R6 S3 J4 `' v    {
# j' d3 w+ c2 z0 p* ~' p8 v8 g     
2 L2 i( n8 w7 w/ V+ e/ r    //Just the hostname provided by the user
. J7 F  t% }* q' ]( h2 X$ I: [     & M2 u- ?( N  W$ G
    //call the method "ingHost" and pass the HostName as a parameter
7 Z) t# Q0 }' c. \" j     % K# ^* V$ r+ F% ]
    PingHost(argv[0]) ; 4 r7 S6 \! v' O; d6 V1 X% R
     
8 u0 }9 Z  h/ n( P    } ; X& ?& A& Z: p
     
6 o6 `0 _8 ]" u/ k% S% f    else if(argv.Length==2) % x! S+ |/ `" }- D7 n* }
     
3 I& e2 M& y+ g0 T    { - h" X3 |! s& P( ?
       _3 B6 S- X0 N: W) g; N5 d
    //the user provided the hostname and the switch
; m5 m( N. ~9 Q/ v: A; A% Z5 g, A. Z     % I. w: }  Z2 o! d
    if(argv[1]=="/r") % |6 s5 O/ Z; u% g; ]  W$ {' c
     2 c3 ?# g) L3 M9 u: R! F
    {
1 T6 v( u& v. |     ) ?5 b( u1 L/ U( u; n6 _$ e
    //loop the ping program 4 G# a2 i3 s2 {8 q! d& L. \& W* k
     
+ F! T3 h9 z& f- m    while(true)
5 e( F7 w: _" Y+ d     8 _8 E4 ?8 O# Y5 ~; B' X) w0 p
    { 1 v) n3 J. Q( c
     . e! D6 a; ~% Q# k% i" H6 a
    //call the method "ingHost" and pass the HostName as a parameter ; d' d  g7 P/ [' s: y. \7 Z
     : V& {9 h9 Z5 x* s  v$ ?
    PingHost(argv[0]) ;
7 x" t7 O& p  P+ R" O; r     
( f5 H0 s, a. {5 t9 ]    } ; r- u/ `+ c" W7 D$ g3 S7 `
     
1 O- p* K/ v/ {    }
. h, R2 t5 t7 z( e5 R$ I- M$ W     1 B6 y+ E) L2 M7 A3 g
    else * A# J: P3 C1 h/ c8 S; v3 D
     
# m: d& U2 P, X1 g    { : Q! T% r/ [' g! ^1 t  _. h/ J
     - D! Q4 H; ?5 m# G" A
    //if the user provided some other switch
: l& |2 ?+ T8 @# a. Z     
) C# a& r/ n( }0 p$ |9 O    PingHost(argv[0]) ; * T% l. m9 S! Q; T5 D
     . j6 s& u- F. S* \& s1 f1 Z& J% E
    } 2 w3 d& h0 G  u0 g( n1 ?9 F, O
     ( {& P) }1 }2 n4 \+ _! x4 _
    }
1 c6 u! n& }4 f4 J8 H     
8 @( u( r8 x  s* A5 ?' I    else
% C2 \$ l7 G  d! Y     0 Y: `) }# O6 n  W# M! P0 c1 H
    { % J0 ~+ b* _0 X8 n- l# n. o
     
7 P! b* E2 s% b3 x1 ^9 Q3 s    //Some error occurred 9 Z% H, p* C1 V/ [+ y8 ?+ M% Q
     
* `' h4 K$ B8 ?( N. V    Console.WriteLine("Error in Arguments") ;
* {* q( G% A) o$ p     ; D7 ?+ X" H: N
    }
$ a) N& S* V! f8 d" [# Z. o     
2 h9 `4 D: E5 ]% e    }
9 z3 Y0 ~4 S* |& j8 F     ; y' ]% l$ t* `& X& F. T- A
     
, \' T- R: ~) F7 Q" I2 O/ [    /// &lt;summary&gt;
5 c+ |0 M: D" }1 B2 e- A# C, g     ! U5 |" L( @. F, N/ }: r
    /// 主要的方法,用来取得IP,
4 l" Z7 A1 K5 ~- n0 c) g+ y9 h     
) ?: ?# b4 E5 E" ~# {    /// 并计算响应时间 + A* T7 C! Y( l% Y2 E' v4 F2 W7 P# w
     
" d$ h: c7 ~6 |: m    /// &lt;/summary&gt;
4 l' L0 G/ `4 K1 S: Q     
, S+ S( j# H& i3 L- W    public static void PingHost(string host)
7 I+ t( h4 e& _/ {% B2 C+ x/ k     
( z& U" Q  C, W9 P* \    {
( Z2 E+ o- K7 q0 [# T     
# g3 ]) J4 B  e2 I5 M    //Declare the IPHostEntry
3 E, K1 U, H) W- I7 r     
+ a* _9 w$ X/ h  Z' A* i    IPHostEntry serverHE, fromHE;
/ J1 ?8 k# i9 I, R       Y7 q7 u! x* e. G/ y, w
    int nBytes = 0; / I9 j4 c* y& }2 A! h1 t
     
% n( R5 K6 J% n    int dwStart = 0, dwStop = 0; 4 o# U/ ]$ J4 @* |1 D' K9 M+ [
     
; ?2 u: g; |. m+ |% E! D: w( f    //Initilize a Socket of the Type ICMP - f, @' B9 l: j
     , n( D7 ^0 d( d1 D3 b7 y
    Socket socket =
& v4 h  ^" s! Q& f# Q4 z# @     - a  }+ T6 ?% z1 @( {/ a
    new Socket(AddressFamily.AfINet, SocketType.SockRaw, ProtocolType.ProtICMP);
( r; y) o, o2 ]3 x; S7 M- |: g     + V7 z) z8 [$ d6 p1 w% W
     8 d( E0 @$ s0 B
    // Get the server endpoint . q" Y! `( u8 b' c9 j
     
/ `' p& b9 I8 J! f1 H    try
2 v3 K+ |/ r$ o( R+ |     : G6 W9 I. K4 G) \# a
    { " m1 Y7 z6 D8 r: b; ]$ d
     
7 w) O, d+ Z; ~7 a  [9 V- y    serverHE = DNS.GetHostByName(host);
0 k2 I- |5 z0 |8 m9 S     ; T5 L; w8 w( F  X
    }
& D6 o+ o& k1 T& b: ?" C+ _' m6 `     
! S. c% ^2 V' G: z/ F" K% A    catch(Exception) 9 x$ V! S# v5 Q  e
     
8 y+ V) B; a( p1 _, V8 k    {
; Y- V9 t/ E6 ]     
/ L3 p" H* K- n9 Y    Console.WriteLine("Host not found"); // fail
% v& \; @2 E$ m, m' e# ?% d     5 l. @' c( ?5 ]5 b$ U0 D
    return ;
6 J- w) Y" ?6 L. \. B     
* v# I8 p2 y- K4 e7 y    } 7 l. @" w8 q# y& [
     + i; f  `0 H; b+ R9 H5 W
     
9 I2 j0 G/ ?# D# f    // Convert the server IP_EndPoint to an EndPoint
7 o2 w% V- w& A) i0 |3 r  ?- L     
0 M' _$ B$ s6 @; }6 l  S    IPEndPoint ipepServer = new IPEndPoint(serverHE.AddressList[0], 0);
& H7 E, T- v' }& f) Y' J8 y" D     
: B# M, x9 c% F7 Q+ a    EndPoint epServer = (ipepServer);
# `$ M* }0 F: a2 }) _! T' W1 S5 Q     . A; W) ]2 ]! ]& k* s0 i. J" ~4 h
     
2 X! ~5 u9 R( V3 f( Y    // Set the receiving endpoint to the client machine + s) F5 r/ L4 H7 V6 _( l$ a
     
1 |% ]0 s' r  i: F    fromHE = DNS.GetHostByName(DNS.GetHostName());
3 R: n/ ]* N" q! L' j/ u     
1 a/ Z* K+ f" P/ N1 D    IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 0); 6 E, A% \* v% b
     1 k8 X5 ?8 `  h  d+ Q" U8 [
    EndPoint EndPointFrom = (ipEndPointFrom); ' ~+ W( Q9 v8 o2 ]) ]7 g( g
     3 S5 o0 M( l( b) X' m
     ( Y$ \3 T  l4 S4 f5 n
    int PacketSize = 0; 1 j! V7 [4 D) O5 K
     2 S8 Y0 w' U; l3 w: f* {
    IcmpPacket packet = new IcmpPacket();
/ R- }8 ^  j. c# R2 A3 S     3 M/ n8 u6 j1 L
    // Construct the packet to send
' W  t9 D; _7 b! D     9 A$ Z5 T0 J& j. [3 e, ?0 u
    packet.Type = ICMP_ECHO; //8
" Y) S9 `% D1 g, c# F* X* A     : Y- C7 i8 Q) f' j2 z0 \
    packet.SubCode = 0;
+ O9 G- U, N0 H- h( k7 s1 h     
! T) u. X. x# |5 y' _    packet.CheckSum = UInt16.Parse("0");
( H" D! U0 `; d/ c6 Y! H) \9 j, G/ p     . g, y2 e9 Q/ }' n7 C
    packet.Identifier = UInt16.Parse("45");
& h  {1 Q+ K; h7 O     6 y) F& h2 x0 Y9 g' S
    packet.SequenceNumber = UInt16.Parse("0");
! @. i: Z5 I0 }' @5 h: {0 B     7 V; B+ k0 T$ w5 ?$ b4 S& s
    int PingData = 32; // sizeof(IcmpPacket) - 8;
4 M& y+ b5 X0 \* `* f     4 q" M( W* u1 ?' X+ r! d" `
    packet.Data = new Byte[PingData];
, Y0 P& j# z, L) ^1 w* l7 r1 W  m     
6 l. J: Z" Z( V+ t. K- R9 J    //Initilize the Packet.Data * C8 Y; S: t* u3 |5 ^& u
     
) k5 k; H) E$ `8 v5 I# P4 n  s    for (int i = 0; i &lt; PingData; i++)
* \- |. O$ S# q, _     
% g# ~  R) S) M! @8 G    { % N; J6 Y9 z3 w: l1 F7 V
     
& Y8 q/ }7 \$ E( ^    packet.Data = (byte)'#';
. y/ i. ~9 v3 `* c     8 L3 X7 O( ~* y0 w
    } : t/ E, R9 y; v9 J; s4 ?) \$ f5 a: h
     
2 `, E% q# g1 G; t; J; f0 j     2 w0 N9 G& i) I% ]8 ]8 o3 n
    //Variable to hold the total Packet size 2 Y7 ^4 \& r( y1 _; x* M
     
1 `' [2 M( Z0 z1 [    PacketSize = PingData + 8;
% h7 {+ ^2 o) S3 R% V7 I' Q     ! C% A. \8 H: g  x9 R/ d2 N2 ?
    Byte [] icmp_pkt_buffer = new Byte[ PacketSize ]; - n  P/ o/ d4 T6 N2 B8 F2 [
     
/ t7 ~# T1 n" l# K    Int32 Index = 0;
1 d2 O8 _, R; b     
$ T3 r2 \. I+ p# C- k) \/ j    //Call a Method Serialize which counts : R& A( w# I; D6 D, w( i2 G8 D
     $ x+ [0 F/ i) N7 G% f$ p' W
    //The total number of Bytes in the Packet 4 R$ a- a: W- Y7 U9 `
       J' t! f* e. q$ x. v; m1 v7 X; C
    Index = Serialize(
& F% {0 X8 a6 J% H+ A0 Y& X3 l     0 }& l( w% s$ R. c7 I( _! [/ g7 \
    packet,
; _* t& c* w7 D. N5 F! k5 h     ) ?) o  s. L( V. z
    icmp_pkt_buffer,
$ P+ \( R; [7 L' y9 k* q     
4 t- r6 H; y! U    PacketSize, 5 w* o( n/ [. B8 u9 [
     . F# Q- i* h  \2 V
    PingData );
) u2 O$ o. C; j, k6 B     ' g( h0 Q- v/ R) k0 I
    //Error in Packet Size
1 G; i' q$ r; Z& z& o     8 S7 k2 j+ K+ t% f$ _3 _$ ?. ^; A
    if( Index == -1 ) ! y4 Z5 H( M/ K! s3 T
     
/ I* }9 {8 l6 v3 ?    {
' ~% _: v$ L# g2 i: @     
* ~# M) b1 Q$ X8 t& h    Console.WriteLine("Error in Making Packet"); ( P0 I, H9 u$ _" \( @7 a7 ^
     7 T. z8 S- b. [! V2 \
    return ;
, O: R# q: h+ ]6 O& E2 {     ) r) ^; o! z& p6 G' y* H7 A
    } 3 {" a) r: ]; e/ |! d# t+ Q% m; M2 H
     
# L- t7 N0 t0 v) D     
+ Y; b/ Y7 s, z/ u! G0 O    // now get this critter into a UInt16 array : O+ i% V+ ~+ E) i9 O
     
8 z! n. R, }- m; P6 p     
6 q2 H) G$ x; @    //Get the Half size of the Packet
2 w8 {$ C" G' G$ f1 G) U2 I     $ G6 r% `5 d2 f+ J! \9 G
    Double double_length = Convert.ToDouble(Index);
' x/ p8 K% w0 E6 K     ! m( r7 ~& f! n: f
    Double dtemp = Math.Ceil( double_length / 2);
' m- S) g6 Y2 T* [     % J& e5 e" e& C$ u
    int cksum_buffer_length = Convert.ToInt32(dtemp); 3 W% ~' S4 I+ Z) c) N
     # A( d5 y; l" m3 }8 b* l* e8 W
    //Create a Byte Array
1 Q+ _7 c+ Z5 S% d1 l     0 x( |+ R, v0 V  m# H& M; ~  H5 i
    UInt16 [] cksum_buffer = new UInt16[cksum_buffer_length];
# ^; E0 p3 a/ g4 ^6 Y+ \     9 P' E2 l" ^% B: [  |; k# i
    //Code to initialize the Uint16 array " N, }/ x0 D/ H; L5 r
     
) _. o* N# P* Y1 D* d  @    int icmp_header_buffer_index = 0; 3 r, I1 u; C- V9 e" u5 c3 x
     3 P5 N; [! ]5 }) A
    for( int i = 0; i &lt; cksum_buffer_length; i++ ) { $ q- X1 c3 j( F  g: `( }$ T
     / n/ A7 F+ g* X$ C6 i5 f
    cksum_buffer = ! Q- u" N/ @. m  N0 ?- J+ m
     
# ^9 v5 \3 A. Z) ]    BitConverter.ToUInt16(icmp_pkt_buffer,icmp_header_buffer_index);
  f2 e! }$ Z8 v2 u     " L& W- k/ U( K; y( O  a; x6 u
    icmp_header 6 F" [, [4 h- x+ M% x
     
, k: Z, w$ q2 v/ Z/ J  w0 P    以上代码可以直接在时代互联的ASP+ASP.NET 虚拟主机上直接运行,欢迎试用 !到<a href="http://www.now.net.cn/host" target="_blank" >www.now.net.cn/host</A> 订购后可试用 ! 0 X4 |! |) u! k/ [1 X% J
     
0 a! |- s: B  {1 i+ C     关于ASP+ASP.NET高速虚拟主机,也有同时支持JSP(JAVA) 和PHP的综合虚拟主机。也可以试用,其他问题可以有免费网络电话咨询,
7 Y3 }" @/ e8 o9 `8 d0 ~( }     欢迎随时联系 <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A> </P>
. e8 R7 E3 G! k( C8 B  @<>时代互联(<a href="http://www.now.net.cn" target="_blank" >www.now.net.cn</A>) 的虚拟主机,免费配有 CDN 镜象网络加速 ,送域名 邮箱,流量访问系统,留言版,计数器!
' d8 w# w) H3 K+ l' F     # s5 m7 C2 K5 d! [1 d0 a
    虚拟主机在线订购试用,请到: <a href="http://www.now.net.cn/host" target="_blank" >http://www.now.net.cn/host</A> 3 L) e$ q$ M! R3 Z& R/ j$ i/ n; p
    域名+空间的优惠套餐可见 : <a href="http://www.now.net.cn/special/" target="_blank" >http://www.now.net.cn/special/</A>
7 q& f$ ~# g+ |8 h' G1 L     " S! C+ i" q4 ~2 P/ D
    如有问题要咨询,时代互联提供免费咨询电话,点击这里: <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A>
$ r& |# M0 {8 R( M" u    QQ 联系 :405881840 108786612 </P>$ V: Q* E5 q0 ]+ Q
<>----------------------------------------------------------------------------------------------------------------------------</P>3 y+ H7 Q/ X! p8 f8 q1 [0 ?+ \
<>& _( \. ]; ?3 o3 P: I2 A8 A
       主机租用,折上有礼,租用9折优惠加送价值3600的CDN 主机加速器 !详情见: <a href="http://www.todayidc.com" target="_blank" >http://www.todayidc.com</A>
, B" S3 y& ~* J     
1 L( g1 N3 L. _7 @" [, M( D    企业邮局—— 立企业的统一形象,自由增加帐号 划分大小,不限制附件大小,繁、简、英3种界面智能显示。强大Anti-SPAM反垃圾邮件使用专业杀 引擎Anti-VIRUS,在线实时自动杀  ,价 超低! <a href="http://www.now.net.cn/email/" target="_blank" >http://www.now.net.cn/email/</A> 0 a& `$ I0 G% s* l9 A
     
9 X4 ^% G  Y$ j/ l  H" u    智能建站——3分钟就建立了数据库功能的网络交易平台,只要填写公司的资料或图片,就可建成网站。免费试用到 : <a href="http://www.now.net.cn/auto/" target="_blank" >http://www.now.net.cn/auto/</A>
1 E. m$ q% r% Q. k: t4 q     
- l% S5 T3 g$ {$ l0 c    繁简通—— 300 元就给你一个完全同 的繁体网站,方便开拓 外市场!免费试用到: <a href="http://www.now.net.cn/fjt/" target="_blank" >http://www.now.net.cn/fjt/</A>
% G& d! A  l5 [3 E     ! p# z- F2 u& ]* Z2 G6 p! S, `
    动态域名——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-21 10:06 , Processed in 0.477070 second(s), 59 queries .

回顶部