QQ登录

只需要一步,快速开始

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

Asp.net编写的PING工具

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-14 15:37 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>    Asp.net编写的PING工具
. V3 H/ ~! j1 {  S( m. V     
  M; x8 H: e# W0 j  M9 R     
$ B' K; B8 B2 [/ O4 s% s+ P    PING 是一个用来检测网络连接速度的工具,它会在本机和给出的远程主机名之间建立一个SOCKET 连接并向其发送一个ICMP协议格式的数据包,然后远程主机作出响应,发回一个数据包,通过计算发送到接收数据包的时间间隔,我们可以确定连接的速度。 # b! h/ t2 V! ~5 G
     
  t+ V0 V, [5 f     
  F7 {* t. P) i1 K- Y/ @     
. \5 h0 d, o! r9 b" Q     此程序可以使用于 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> 1 w/ O7 E/ S7 {% m; z  ]
     主机+域名+邮箱 的优惠套餐,可以见 : <a href="http://www.now.net.cn/special/host.net" target="_blank" >http://www.now.net.cn/special/host.net</A>1 b4 E9 a4 Q* R! u
     9 z" N# h' K  y3 A; q% t
     
" }+ T  R& p' u! K! a) D* o& Y     
/ C% a5 V/ z1 p5 C0 [* u    使用方法 ping &lt;hostname&gt; [/r] 3 N2 a) ]# @. Z( @) _
     
2 h9 T- `4 E% X% F9 x    &lt;hostname&gt; 主机名
& B' _& h8 z. C0 B7 T8 t! `     ! ^' i) K! F5 }- `. ^
    [/r] 可选属性,决定是否连续的 ping 远程主机。 # T' W9 w1 q* E( k5 H* `9 B% F
     
% f0 n, E+ E# u% S2 |5 F" s) J: M9 [4 @     6 V' O" q7 M0 U  `& E3 E0 L
    下面是代码:
. u2 ]2 y& x/ e/ b     # `8 Q/ M* E. p! p
    ///ping.cs 7 S) B: P$ I3 ^+ ]/ ^: }0 K; i
     
$ a0 x; Z4 ]3 D7 e& S1 R    namespace SaurabhPing 6 \. M# \% [1 M: l& A+ T6 `
     
7 ^7 v0 p1 R1 C' c" q    {
: @, D7 h+ ^5 ?! A: s) T     
6 U+ P7 z/ g- T* N% Q) w    using System; 6 M' B& I* d3 u& v5 v9 g
     
( Q& \* t7 Z- _8 {5 a/ m    using System.Net; # H/ T3 M% H. V
     - \6 I/ c4 X7 ^  l# `
    using System.Net.Sockets;
( X& L( }! r9 i: A! |     
5 H! Y5 y, }- a    /// &lt;summary&gt; # z: c1 \" }3 P1 j6 l7 U9 @, H+ U
     % h% D+ m: l3 M' E5 m, Y  }1 c& U# K
    /// 主要的类:ping
* m& F" N" w4 }% r     2 S- k. x, u7 l: G! @
    /// &lt;/summary&gt;
/ I# k; m8 k- x7 h! U. C! _     
7 d. n. B/ A, r$ e6 a/ K7 H" G' g    class Ping
" Q1 w0 J- N1 U1 }* ^& \7 @     
4 s4 _5 i& M6 h- L  i    {
- X2 @! S. Y8 W3 Y0 n& M7 m, M     % K2 I! d% ^6 `( S) j1 E% u
    //声明几个常量
& i5 S9 B/ a4 S7 e! M     0 ~% _! ^& [& ]1 h5 d( c9 D
    const int SOCKET_ERROR = -1;
# A5 T" v4 ?! J8 F$ `6 S     $ s; Y/ G' _4 |- |: |; N1 p4 S
    const int ICMP_ECHO = 8;
1 X3 ?0 {2 J  Z9 C     * k/ {. \6 s+ L+ b# C( s6 c. H( i
    /// &lt;summary&gt;
3 j* e' L' b+ A3 _4 x9 Y     6 e, F7 @1 `" q% m6 ~* `1 m: M1 |
    /// 这里取得Hostname参数 9 _8 t" S1 O( L/ W4 M% F. w
     
% s: C4 J! [3 |% U    /// &lt;/summary&gt;
* w7 t0 W' i3 A$ A+ J* _     
9 ]1 [0 u5 u$ c1 g' D    public static void Main(string[] argv) ) s5 C7 V1 \$ }) J4 [0 z
     
5 O7 ~( G- I; o+ J    {
. I0 b' z' O: ]7 g     ) V2 [) y, }7 Q4 `- P# E) r- |& M
    if(argv.Length==0)
$ d; s+ Z+ [; ~$ Z5 g* w5 S. j     
2 q( v4 ^, S$ k6 O) |    {
( T' l9 B& F0 J- u4 I, B7 C( V6 c       u/ B$ m! ^, q# S, R7 Q* I: H- j4 p
    //If user did not enter any Parameter inform him
8 l$ U, \* B% G1 }     
- N% L/ y7 Z4 b% S1 N4 h3 a- S# ~    Console.WriteLine("Usageing &lt;hostname&gt; /r") ; - x) J, k- Z' [/ j; D
     
, n) P- s& y" r5 n2 a' S    Console.WriteLine("&lt;hostname&gt; The name of the Host who you want to ping"); $ s4 f3 i& i$ H! n! D9 A# E
     4 w, v% k9 B% {2 ~* B+ T9 U) `$ @
    Console.WriteLine("/r Ping the host continuously") ;
: }! I( G5 _, H2 d8 `     " x- T: t4 U4 _2 t$ X; ^/ j
    } : j7 w* k* Q5 W2 M
     
! I6 n5 u9 q3 C1 Y    else if(argv.Length==1)
6 ~- x! F! E. S* A     
8 r' D6 w: x3 I- T% e( A    { - ^/ |/ R6 s5 H8 F) w- _7 ~
     
# }# |! B! g/ ^6 }    //Just the hostname provided by the user
% A, b/ O- i3 s( x     + f$ f8 P3 F: t7 ]' }2 x  A
    //call the method "ingHost" and pass the HostName as a parameter
6 [5 m- ?8 _* x8 i     ) @! w) N" _: q; \/ E  @; b
    PingHost(argv[0]) ; : r8 K; f2 ~7 f: f2 Z  [
     
1 a3 K9 c! k5 F$ G    } 4 O% @. y- ~3 k# V/ T9 G, J
     
8 j, E; G0 r8 X; i    else if(argv.Length==2)
9 C' Q  E: \5 s. z; q' _     
* [3 L1 g2 |! ]( n* ~0 i    {
. Y' @1 j# h, f" c     
( e( `  m1 L0 Y, ^- ?' A    //the user provided the hostname and the switch
8 T1 _; ^6 W$ H( a1 h     
% [8 T9 t6 t% V& `6 B/ c6 [2 E$ E7 H% S    if(argv[1]=="/r")
* I8 O1 r: X/ `5 Y6 l) }! _7 M2 f8 v; z     , I7 j; f  M; y
    { ) \6 ?9 B# P; y4 J- f! P4 X; |
     
9 z! W2 w" ^% K7 D/ j5 E    //loop the ping program 8 S* N% q( ^7 D3 b1 `
     
4 f& m6 J5 }$ S    while(true)
8 z2 y( B3 ~( n( f* ~( s% [, C     6 h" s6 z1 C2 P  k
    {
, |6 O) b( E5 z7 h     4 {7 k7 m& x, P: {
    //call the method "ingHost" and pass the HostName as a parameter
+ u' v0 d/ A4 v! I; ^& u. l6 D' z" z" T     * }; t/ c  f0 r6 w4 A* }# e
    PingHost(argv[0]) ; ' L" L6 B- I5 e1 Y9 s
     4 n' K$ \. b+ o1 S* S
    }
6 P6 n% V. ]; i+ R     / v: F0 x* d, `$ k
    }
6 ?% `* R) B3 @2 c. L     
5 ~, W- b/ g  t( V* n    else
- |8 e2 o$ {  F# Y5 j5 v/ U     
3 |' [( e0 J* K- L; ?/ _    {
$ A. \2 E# B2 S9 J$ n0 a     
" T% x. f' a, J; T! I0 o8 k' h( B    //if the user provided some other switch 4 Q9 c: i& k' V! f4 b% @# R
     5 T: S! r  \$ M8 }
    PingHost(argv[0]) ; & E# u5 t9 T& S* N" Y8 r1 P2 Z' j
     ' A0 O7 x- P4 y9 @1 O
    } . K- O7 |9 Q- }4 w/ N
     
' V8 \6 [& Q% [0 |) I# i    } & i) K% n- D3 N! g; ^/ G7 \3 y
     3 P* g& ]6 L2 Y3 k
    else
2 g8 l3 S- L( R6 g- k* o     * S4 _: N2 \/ w5 P' R, q
    {
8 r4 I4 t6 u9 F( k. x; g+ c     4 {% W2 f! T" ]$ P7 V% `9 S
    //Some error occurred
/ l9 z( P: g$ b# _/ m1 J     7 e" g5 a$ [; ?
    Console.WriteLine("Error in Arguments") ;
' \* R8 D' m0 P     # n: q5 ?4 ]) U" p# L
    } 0 `0 N. `$ y2 O! A1 F0 p
     
) G( O+ q; `: l5 ~0 e6 U+ I    }
8 ~( G1 U6 T! {6 u# }     
4 [1 P6 E# k- N/ m$ }     
" @. M% n% |4 y0 ^& D  D: p    /// &lt;summary&gt;
8 E0 m/ T6 A9 Q7 K6 H/ U* Y/ M& K; q     
) Q/ f2 B7 i8 j6 a    /// 主要的方法,用来取得IP, / b5 r4 K  g5 P% _1 [
     / D! ~3 v; a, V% n6 j
    /// 并计算响应时间
, `9 N. @/ }' D! n* o* K     % P+ h5 B: }2 `' T
    /// &lt;/summary&gt;
  U5 x, c& M- k4 R! @8 G6 b# E     " H+ x/ t. A2 k* T( }& E% `$ @
    public static void PingHost(string host) : {1 U9 U& a% d" m4 H( i1 o
     5 u9 T" H' v2 P# h* F7 i" L
    {
# b- Q: H5 D* `) _  `     + c; _$ w  s3 Z4 q
    //Declare the IPHostEntry   x" F" C; K$ j0 C
     8 z2 b7 l% ]; v: b
    IPHostEntry serverHE, fromHE; 8 t! N. x6 _. u" T  g
     . k2 M6 L) J- d- c7 `
    int nBytes = 0; + ?% A' Z( \8 ?- w& J
     
/ y5 t6 M! d: `( t: F    int dwStart = 0, dwStop = 0; & t! [3 T, D7 g+ v( p
     
1 \# V5 A4 L. |1 z" [    //Initilize a Socket of the Type ICMP % @9 d' ^4 k7 X0 {# z1 G: y! S* _
     ! D6 i# j( q; K2 e( F$ J
    Socket socket = , V( A7 ^: \5 c6 I3 U
     " _3 ]9 i* t' w  `3 l
    new Socket(AddressFamily.AfINet, SocketType.SockRaw, ProtocolType.ProtICMP); 6 q' ?( Z& G* I4 m2 }
     1 ?" _8 X, j, _( u
     $ k6 }" j' i: h( i% T, V
    // Get the server endpoint # m2 Y2 ]8 ~. \! n
     
+ B# t- M9 d: N8 s    try ' H8 [( t# S# W) i' n9 D, o' o0 o; j
     : S6 ]5 H* l' F+ j
    { 4 r* Y% h2 B& m
     
4 t0 c6 {& J: T& m    serverHE = DNS.GetHostByName(host);
1 _6 }! B6 r( c     " c0 k# F) ^: ?) Y2 l
    }
$ Z: l6 H. c; C; |0 b8 p8 Z     
4 e. H2 l5 g3 O  b' A- {    catch(Exception)
0 d4 V. v2 \( k$ n# G- ^' P6 }     7 e/ Y* x" O1 R( u
    { ( J9 g# A( m! v6 u" ^" G
     
) T" ~) M! _; l2 N$ P3 @/ X    Console.WriteLine("Host not found"); // fail . Y* W7 R/ _8 V, }: s
     4 J/ t, i, X' ^% F5 h+ m
    return ;
1 p: F6 M# z; S" ?/ g4 t  k' d+ L' m     
0 o" N1 ]+ i3 v- v; ]- F4 _& v    }
% i# v$ X, `9 |     
: G5 `5 k' J; V2 }+ m+ c/ M     
8 Y6 H1 c' J# K+ z    // Convert the server IP_EndPoint to an EndPoint 6 h& r( W" z  W7 o+ |' Z! ~- c
     
* l& K! _# a3 w    IPEndPoint ipepServer = new IPEndPoint(serverHE.AddressList[0], 0);
3 ~6 l% x3 L# [$ V8 m. T* b7 d     % V: y& a- _2 g3 ]6 P. C
    EndPoint epServer = (ipepServer); : w! P. l+ D! P0 i) H5 E
     
6 Y8 D% b# n0 P: P; G     
) @& b" x/ S4 q, ^- c+ }    // Set the receiving endpoint to the client machine % O, M- j- r) y/ \
     ! L$ S  z& W5 s1 C7 R  a) ^, l
    fromHE = DNS.GetHostByName(DNS.GetHostName()); ( m: F/ C% l; q2 M4 S
     
' P6 N/ C6 K5 o; X9 ]- o& Y    IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 0);
6 q4 a( x1 B6 L9 p, G. H# C# q0 }     
( ?! {$ _) P9 P3 c$ z    EndPoint EndPointFrom = (ipEndPointFrom);
+ T  ~8 p; }- A     
: Q8 `& e  C) M; Q! f3 E: H/ y     
  T6 O3 [7 e# v$ r! a0 G    int PacketSize = 0;
1 p3 P" @  K, ]& G7 X3 L$ j     
" F" Z: J* j* B# L- w    IcmpPacket packet = new IcmpPacket();
; X# X7 d& @) D* G2 P     % m3 J* g3 S. ~! G, c! ?" S3 ~  r
    // Construct the packet to send
5 r6 H! q) y' Z( H& ]) O     8 N; K9 F9 {+ R6 R7 a1 w& I
    packet.Type = ICMP_ECHO; //8 0 I: L$ O5 j0 w& M
     
  w3 Z+ e& x8 S3 q* N" |. |    packet.SubCode = 0;
% K: G3 b  o# ~     
8 g5 L& c/ c3 W: l$ D    packet.CheckSum = UInt16.Parse("0"); . D3 [0 j  v' @+ b% d: N6 Z
     
9 v& x' _% K$ o& o: g    packet.Identifier = UInt16.Parse("45"); . p7 o. ^( C* H0 M
     3 C3 |( y/ K5 N+ F
    packet.SequenceNumber = UInt16.Parse("0"); 0 Z" J; ~" o, t3 ^  K
     6 A' l* Q5 m: ]9 ~7 _
    int PingData = 32; // sizeof(IcmpPacket) - 8;
: K  w' P8 p7 A9 l$ L     : C9 a' b3 f1 |
    packet.Data = new Byte[PingData];
5 S8 W  t# Y; s- H: K* l8 Z     
6 B) ]$ A: O' J7 Q- f    //Initilize the Packet.Data + i, o- Z  K& ]- _/ j4 Z
     2 f. k: B+ K+ N8 Y) J0 {/ q5 y
    for (int i = 0; i &lt; PingData; i++)
  Q: t% Y5 B: A+ b) _% s* n     9 ]/ [; _  g$ h) ?# Y  t* g
    { " w1 w+ B, I, Z) X: b
     + W8 I. V* Z  D  j0 l& k
    packet.Data = (byte)'#';
3 O& u# _% x8 Z     
6 b% s0 \+ Z; A) ~    } 5 x* O5 e* E9 D: |! m2 q
     
" K8 y1 W+ H, f$ A* [: o; Y% b3 ?) l- Q5 h1 x     
& v) [8 W( |) U8 Z    //Variable to hold the total Packet size   I8 _4 N0 t5 o0 i/ {, |$ A
     
  A+ M8 j) O; B, a9 `2 P    PacketSize = PingData + 8; ; `% ~+ [5 X) N+ V0 {7 Y( M
     / L4 `6 f3 }5 I- ?& ~: n
    Byte [] icmp_pkt_buffer = new Byte[ PacketSize ]; : ?+ i! }* C6 k1 X3 o& l  T
     
. E9 O0 q% s9 |  N6 L9 H    Int32 Index = 0;
* O8 |: P' t* r" n; {     8 K  j' i7 @8 @; {& Y1 [
    //Call a Method Serialize which counts
6 Y: n( t. g2 z9 W( h9 x     . {- A* ^0 w4 F0 c8 u
    //The total number of Bytes in the Packet
3 \6 L" w9 M- C& l4 S# }$ |( ^     
6 O9 J; v& J) f4 G6 v    Index = Serialize( 5 x% j+ q9 ?# I* a4 z& |
     
" b! C+ H( v: }* \! N+ `    packet, : v# q6 a: |. k" t9 o5 H
     ) w' b3 y6 o3 L
    icmp_pkt_buffer, : p* W+ |0 c" n: m; g, z. R
     
. h2 B% b1 _$ F3 X    PacketSize,
8 v; A  ~& l" _- j% U. c     . h3 N" d8 I/ B1 i4 C7 O" i
    PingData );
1 p: s6 O5 d+ ]' s9 }; }) o, r) C     ! F' Q4 X7 E6 X" C' k
    //Error in Packet Size
6 v- n& h6 m* G7 V     
/ ], d7 X# b/ D9 J) ?- X    if( Index == -1 )
1 t# O' n! n. e! i) p     " B) e1 s. o1 u, {
    {
' Z2 k1 L: }( Y9 t$ K! y     
1 A7 j2 l1 X  b% K  q0 B1 o; \    Console.WriteLine("Error in Making Packet");
3 [* ~( A9 s6 @& f     * P& [9 s" w5 P0 L7 V! D2 X
    return ; 4 I0 c: l: E/ X
     $ x6 P! k! w; J! n+ o8 T1 j
    } % _, r% [6 }! M3 m$ {5 c
     
9 ?# ~: ~4 {, U     , S4 d: s3 Z8 N. g
    // now get this critter into a UInt16 array
5 w4 H0 n) o3 j3 Y# D: Q0 W5 W% T4 P     
( F& L* `* G% ^7 D) z. E     
' R4 k- {# \& d) X, W7 ~    //Get the Half size of the Packet   t! ]( ~; Q5 h, t
     % B- @1 k" |  e1 A" g
    Double double_length = Convert.ToDouble(Index); / C7 m; o4 P1 N; w9 ?! Z' c* B
     ( V7 K( p4 q7 T, m: S
    Double dtemp = Math.Ceil( double_length / 2);
& Q5 U( h" O4 X% e0 x     
! W1 @) z3 p& F$ |    int cksum_buffer_length = Convert.ToInt32(dtemp);
: g/ }1 S/ w4 H2 ^, c     
8 x. B4 U$ Y7 ]0 G2 I2 ~) I! B+ x    //Create a Byte Array ! B  Z8 y8 M. y
     
7 B/ j% i# x$ M- F/ X" z. ~    UInt16 [] cksum_buffer = new UInt16[cksum_buffer_length]; 2 H6 f9 h8 |  {- g6 r+ t0 N
     * H& {7 {  U6 {# H) M: J" p
    //Code to initialize the Uint16 array
" v5 x& c# u1 S& O; }9 c2 G     ; s  x  V# o/ s
    int icmp_header_buffer_index = 0; ! y- Z# h- u* |" r
     ' u2 O( w: k! B7 c  K# X+ B8 B4 i8 F
    for( int i = 0; i &lt; cksum_buffer_length; i++ ) {
8 }& U/ }3 D  _7 l+ T! ^2 ^/ \3 {     ( f2 o! Y5 j7 B6 T' w; k$ B8 r$ l
    cksum_buffer = 2 N  U/ x! e' Q( s
     
( @2 v3 A# x4 V: u3 D  e+ D    BitConverter.ToUInt16(icmp_pkt_buffer,icmp_header_buffer_index);
  D  ~; j# ?  O) y1 g+ y; _8 P: V- }     
5 `) c0 C0 Y# }    icmp_header
% H) z3 X& ?0 Z3 f8 N     
0 M: r: M, a7 @4 s7 o    以上代码可以直接在时代互联的ASP+ASP.NET 虚拟主机上直接运行,欢迎试用 !到<a href="http://www.now.net.cn/host" target="_blank" >www.now.net.cn/host</A> 订购后可试用 !
4 ^& x- P  r$ l8 R     
: p0 {& E- k, v5 ?& X" W: \     关于ASP+ASP.NET高速虚拟主机,也有同时支持JSP(JAVA) 和PHP的综合虚拟主机。也可以试用,其他问题可以有免费网络电话咨询, : O2 ^$ p/ ~! V. Q
     欢迎随时联系 <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A> </P>
+ u9 w! w5 b1 U, ~  m<>时代互联(<a href="http://www.now.net.cn" target="_blank" >www.now.net.cn</A>) 的虚拟主机,免费配有 CDN 镜象网络加速 ,送域名 邮箱,流量访问系统,留言版,计数器!
9 @7 w. ^/ m% ?# Q% M  k; ], ?     & i% g; {. s  P$ f9 T, |, ]
    虚拟主机在线订购试用,请到: <a href="http://www.now.net.cn/host" target="_blank" >http://www.now.net.cn/host</A>
5 Z6 E9 R! M3 _* M0 E2 G' Z    域名+空间的优惠套餐可见 : <a href="http://www.now.net.cn/special/" target="_blank" >http://www.now.net.cn/special/</A>   x* Z9 i8 X/ a( I
     4 G' G, X' _3 f0 {! W1 t% I
    如有问题要咨询,时代互联提供免费咨询电话,点击这里: <a href="http://www.now.net.cn/customer/moreline.net" target="_blank" >http://www.now.net.cn/customer/moreline.net</A>
4 g: e3 P2 S: p1 |" R4 h    QQ 联系 :405881840 108786612 </P>" M& \" _4 s6 ~; e5 ~, ~. z: ~
<>----------------------------------------------------------------------------------------------------------------------------</P>
3 \4 M% O# E. h% Z4 H  _5 ^$ i7 ~* V" Z<>& }% @- {, l2 M6 v2 b8 o
       主机租用,折上有礼,租用9折优惠加送价值3600的CDN 主机加速器 !详情见: <a href="http://www.todayidc.com" target="_blank" >http://www.todayidc.com</A>   c' {% O) B! e% f
     / x3 L5 R+ d- v) c, q7 O) u
    企业邮局—— 立企业的统一形象,自由增加帐号 划分大小,不限制附件大小,繁、简、英3种界面智能显示。强大Anti-SPAM反垃圾邮件使用专业杀 引擎Anti-VIRUS,在线实时自动杀  ,价 超低! <a href="http://www.now.net.cn/email/" target="_blank" >http://www.now.net.cn/email/</A>
3 X+ _& a4 g0 v$ k2 x8 H, Z     
. D- E) W& e. X" Y5 g    智能建站——3分钟就建立了数据库功能的网络交易平台,只要填写公司的资料或图片,就可建成网站。免费试用到 : <a href="http://www.now.net.cn/auto/" target="_blank" >http://www.now.net.cn/auto/</A>
& X/ _4 t/ C) }% s  e1 K2 e9 `( t     $ ]( I3 N: i5 k7 V- G( z; F7 j# v. w
    繁简通—— 300 元就给你一个完全同 的繁体网站,方便开拓 外市场!免费试用到: <a href="http://www.now.net.cn/fjt/" target="_blank" >http://www.now.net.cn/fjt/</A>
1 w( d, M0 a$ T- G     & F( U  h1 e8 u& k" S4 x
    动态域名——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 08:08 , Processed in 0.274324 second(s), 57 queries .

回顶部