ÀÖÓãµç¾º

½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

JavaÅàѵʵս½Ì³ÌÖ®ÂÛSocketµÄÖØÒªÐÔ

¸üÐÂʱ¼ä:2016Äê01ÔÂ19ÈÕ14ʱ37·Ö À´Ô´:ÀÖÓã²¥¿ÍJavaÅàѵѧԺ ä¯ÀÀ´ÎÊý:

JavaÅàѵÖÐ ¾«µã¡¢Äѵã֪ʶ×ܽá»ã×Ü
Socket²»½öÔÚÁÄÌìÓ¦ÓóÌÐòÖÐÐèÒªÓõ½£¬¶øÇÒ¶ÔÓÚѧϰAsp.netÒ²·Ç³£ÓаïÖú¡£Äã¶®µÃ£¡
ʵÏÖ·þÎñ¶ËºÍ¿Í»§¶Ë»¥·¢ÐÅÏ¢£¬ÒÔ¼°·þÎñ¶ËÏò¶à¸ö¿Í»§¶Ë·¢ËÍÐÅÏ¢¡£
     ·þÎñ¶Ë´úÂë1£º
  1.         public Form1()
  2.         {
  3.             InitializeComponent();
  4.             Control.CheckForIllegalCrossThreadCalls = false;
  5.         }
  6.         //´´½¨¼àÌýÓõÄsocket
  7.         private void btnStartMonitor_Click(object sender, EventArgs e)
  8.         {
  9.             //¼àÌýµÄipµØÖ·
  10.             IPAddress ip = IPAddress.Parse(txtIP.Text);
  11.             //¼àÌýµÄipµØÖ·ºÍ¶Ë¿ÚºÅ
  12.             IPEndPoint point = new IPEndPoint(ip, int.Parse(txtPortNumber.Text));
  13.             //¼àÌýÓõÄsocket
  14.             Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  15.             //ͨ³£Ã¿¸öÌ×½Ó×ÖµØÖ·(ЭÒé/ÍøÂçµØÖ·/¶Ë¿Ú)Ö»ÔÊÐíʹÓÃÒ»´Î
  16.             //°ó¶¨¼àÌýµÄipµØÖ·ºÍ¶Ë¿ÚºÅ
  17.             socket.Bind(point);
  18.             //¼àÌý¶Ë¿Ú   ¼àÌý¶ÓÁеij¤¶È:ͬһ¸öʱ¼äµÈ´ýµÄ¸öÊý¡£
  19.             socket.Listen(10);
  20.             //µã»÷Ö®ºó£¬½ûÓõô°´Å¥
  21.             btnStartMonitor.Enabled = false;
  22.             //ÌáʾÓû§³ÌÐò¿ªÊ¼ÔËÐÐÁË
  23.             ShowMsg("¿ªÊ¼ÔËÐÐÁË...");
  24.             //¼àÌý¶Ë¿Ú£¬Èç¹ûÓпͻ§¶ËÁ¬½Ó£¬´´½¨Í¨ÐÅÓÃsocket
  25.             //×èÈû´°ÌåµÄÔËÐÐ
  26.             //Socket connSocket = socket.Accept();
  27.             //ÓÃÏß³ÌÀ´½â¾ö´°Ìå¼ÙËÀµÄÎÊÌâ
  28.             Thread th = new Thread(Listen);
  29.             th.IsBackground = true;//ºǫ́Ïß³Ì
  30.             th.Start(socket);
  31.         }
  32.         //¼àÌýÊÇ·ñÓпͻ§¶ËÁ¬½Ó
  33.         void Listen(object o)
  34.         {
  35.             //¼àÌýÓõÄsocket
  36.             Socket socket = o as Socket;
  37.             //¼àÌý¶Ë¿Ú
  38.             Socket connSocket = socket.Accept();
  39.             //ÏÔʾԶ³ÌÁ¬½ÓµÄIPµØÖ·ºÍ¶Ë¿ÚºÅ
  40.             ShowMsg(connSocket.RemoteEndPoint.ToString());
  41.         }
  42.         //ÔÚÎı¾¿òÏÔʾÐÅÏ¢
  43.         void ShowMsg(string msg)
  44.         {
  45.             txtShowMessage.AppendText(msg + "\r\n");
  46.         }
¸´ÖÆ´úÂë
ÒÔÉÏ´úÂëÖ»ÄÜÈÃÒ»¸ö¿Í»§¶ËÁ¬½Ó·þÎñ¶Ë£¬±×¶Ë¡£
     ·þÎñ¶Ë´úÂë2ÍêÉÆ——Ñ­»·½ÓÊÕ¿Í»§¶ËÁ¬½Ó£º
  1.         //¼àÌýÊÇ·ñÓпͻ§¶ËÁ¬½Ó
  2.        void Listen(object o)
  3.         {
  4.             //¼àÌýÓõÄsocket
  5.             Socket socket = o as Socket;
  6.             //¿ÉÒÔ²»Í£µØ½ÓÊܿͻ§¶ËµÄÁ¬½Ó
  7.             while (true)
  8.             {
  9.                 //¸ºÔðͨÐÅÓõÄsocket
  10.                 Socket connSocket = socket.Accept();
  11.                 //ÏÔʾԶ³ÌÁ¬½ÓµÄIPµØÖ·ºÍ¶Ë¿ÚºÅ
  12.                 ShowMsg(connSocket.RemoteEndPoint.ToString());
  13.                 //±¾»úµÄIPµØÖ·ºÍ¶Ë¿ÚºÅ
  14.                 //connSocket.LocalEndPoint
  15.                 //½ÓÊÕÊý¾Ý
  16.                 byte[] buffer = new byte[1024 * 1023];
  17.                 //½ÓÊÕÊý¾Ý£¬°ÑÊý¾Ý·¢µ½bufferÖÐ
  18.                 //numÊÇʵ¼Ê½ÓÊÕµ½µÄ×Ö½Ú¸öÊý
  19.                 int num=connSocket.Receive(buffer);
  20.                 //°Ñʵ¼ÊÓÐЧµÄ×Ö½Úת»»³É×Ö·û´®
  21.                 string str = Encoding.UTF8.GetString(buffer, 0, num);
  22.                 ShowMsg(str);
  23.             }
  24.         }
¸´ÖÆ´úÂë
·þÎñ¶Ë´úÂë3ÍêÉÆ——Ñ­»·½ÓÊÕÏûÏ¢£º
  1.         //¼àÌýÊÇ·ñÓпͻ§¶ËÁ¬½Ó
  2.         void Listen(object o)
  3.         {
  4.             //¼àÌýÓõÄsocket
  5.             Socket socket = o as Socket;
  6.             //¿ÉÒÔ²»Í£µØ½ÓÊܿͻ§¶ËµÄÁ¬½Ó
  7.             while (true)
  8.             {
  9.                 //¸ºÔðͨÐÅÓõÄsocket
  10.                 Socket connSocket = socket.Accept();
  11.                 //ÏÔʾԶ³ÌÁ¬½ÓµÄIPµØÖ·ºÍ¶Ë¿ÚºÅ
  12.                 ShowMsg(connSocket.RemoteEndPoint.ToString());
  13.                 //±¾»úµÄIPµØÖ·ºÍ¶Ë¿ÚºÅ
  14.                 //connSocket.LocalEndPoint
  15. //Ñ­»·½ÓÊÕÏûÏ¢
  16. while(true)
  17. {
  18.                 //½ÓÊÕÊý¾Ý
  19.                 byte[] buffer = new byte[1024 * 1023];
  20.                 //½ÓÊÕÊý¾Ý£¬°ÑÊý¾Ý·¢µ½bufferÖÐ
  21.                 //numÊÇʵ¼Ê½ÓÊÕµ½µÄ×Ö½Ú¸öÊý
  22.                 int num=connSocket.Receive(buffer);
  23.                 //°Ñʵ¼ÊÓÐЧµÄ×Ö½Úת»»³É×Ö·û´®
  24.                 string str = Encoding.UTF8.GetString(buffer, 0, num);
  25.                 ShowMsg(str);
  26. }
  27.             }
  28.         }
¸´ÖÆ´úÂë
·þÎñ¶Ë´úÂë4ÍêÉÆ——Ñ­»·¶à¸ö¿Í»§¶Ë²¢½ÓÊÕÐÅÏ¢£º
  1.         //¼àÌýÊÇ·ñÓпͻ§¶ËÁ¬½Ó
  2.         void Listen(object o)
  3.         {
  4.             //¼àÌýÓõÄsocket
  5.             Socket socket = o as Socket;
  6.             //¿ÉÒÔ²»Í£µØ½ÓÊܿͻ§¶ËµÄÁ¬½Ó
  7.             while (true)
  8.             {
  9.                 //¸ºÔðͨÐÅÓõÄsocket
  10.                 Socket connSocket = socket.Accept();
  11.                 //ÏÔʾԶ³ÌÁ¬½ÓµÄIPµØÖ·ºÍ¶Ë¿ÚºÅ
  12.                 ShowMsg(connSocket.RemoteEndPoint.ToString());
  13.                 //±¾»úµÄIPµØÖ·ºÍ¶Ë¿ÚºÅ
  14.                 //connSocket.LocalEndPoint
  15.                 //Ï߳̽ÓÊÕÐÅÏ¢
  16.                 Thread th = new Thread(RecMsg);
  17.                 th.IsBackground = true;
  18.                 th.Start(connSocket);            
  19. }
  20.         }
  21.         //½ÓÊÕÐÅÏ¢
  22.         void RecMsg(object o)
  23.         {
  24.             //ͨÐÅÓõÄsocket
  25.             Socket connSocket = o as Socket;
  26.             //¿ÉÒÔ²»Í£µØ½ÓÊܿͻ§¶ËµÄÄÚÈÝ
  27.             while (true)
  28.             {
  29.                 //½ÓÊÜÊý¾Ý
  30.                 byte[] buffer = new byte[1024 * 1024];
  31.                 //½ÓÊÜÊý¾Ý£¬°ÑÊý¾Ý·¢µ½bufferÖÐ
  32.                 //num¾ÍÊÇʵ¼Ê½ÓÊܵ½µÄ×Ö½Ú¸öÊý
  33.                 int num = connSocket.Receive(buffer);
  34. //µ±telnet¹Ø±Õ£¬»á²»Í£µÄ·¢ËͿգ¨0£©×Ö½Ú
  35.                 //°Ñʵ¼ÊÓÐЧµÄ×Ö½Úת»¯³É×Ö·û´®
  36.                 string str = Encoding.UTF8.GetString(buffer, 0, num);
  37.                 ShowMsg(connSocket.RemoteEndPoint.ToString() + ":" + str);
  38.                 }
  39.             }
  40.         }
¸´ÖÆ´úÂë
·þÎñ¶Ë´úÂë5ÍêÉÆ——ÏÞÖÆ¿Í»§¶ËÁ¬½ÓÊý£º
  1.         //ÏÞÖÆÁ¬½Ó¿Í»§¶ËµÄ¸öÊý
  2.         int count=0;
  3.         void Listen(object o)
  4.         {
  5.             //¼àÌýÓõÄsocket
  6.             Socket socket = o as Socket;
  7.             //¿ÉÒÔ²»Í£µØ½ÓÊܿͻ§¶ËµÄÁ¬½Ó
  8.             while (count<1000)
  9.             {
  10.                 //¸ºÔðͨÐÅÓõÄsocket
  11.                 Socket connSocket = socket.Accept();
  12.                 //ÏÔʾԶ³ÌÁ¬½ÓµÄIPµØÖ·ºÍ¶Ë¿ÚºÅ
  13.                 ShowMsg(connSocket.RemoteEndPoint.ToString());
  14.                 //±¾»úµÄIPµØÖ·ºÍ¶Ë¿ÚºÅ
  15.                 //connSocket.LocalEndPoint
  16.                 //Ï߳̽ÓÊÕÐÅÏ¢
  17.                 Thread th = new Thread(RecMsg);
  18.                 th.IsBackground = true;
  19.                 th.Start(connSocket);
  20. }
  21.         }
¸´ÖÆ´úÂë
·þÎñ¶Ë´úÂë6ÍêÉÆ——½â¾ö“µ±tenet¹Ø±Õ£¬»á²»Í£µØ·¢ËͿգ¨0£©×Ö½Ú”£º
  1.         //½ÓÊÕÐÅÏ¢
  2.         void RecMsg(object o)
  3.         {
  4.             //ͨÐÅÓõÄsocket
  5.             Socket connSocket = o as Socket;
  6.             //¿ÉÒÔ²»Í£µØ½ÓÊܿͻ§¶ËµÄÄÚÈÝ
  7.             while (true)
  8.             {
  9.                 //½ÓÊÜÊý¾Ý
  10.                 byte[] buffer = new byte[1024 * 1024];
  11.                 //½ÓÊÜÊý¾Ý£¬°ÑÊý¾Ý·¢µ½bufferÖÐ
  12.                 //num¾ÍÊÇʵ¼Ê½ÓÊܵ½µÄ×Ö½Ú¸öÊý
  13.                 int num = connSocket.Receive(buffer);
  14. //µ±telnet¹Ø±Õ£¬»á²»Í£µÄ·¢ËͿգ¨0£©×Ö½Ú
  15.                     //µ±telnet¹Ø±Õ£¬»á²»Í£µÄ·¢ËÍ£¨0£©¸ö×Ö½Ú  ¿Í»§¶Ë¶Ï¿ª
  16.                     if (num == 0)
  17.                     {
  18.                         ShowMsg(connSocket.RemoteEndPoint.ToString() + ":Í˳ö");
  19.                         connSocket.Shutdown(SocketShutdown.Receive);
  20.                         connSocket.Close();
  21.                         break;
  22.                     }
  23.                 //°Ñʵ¼ÊÓÐЧµÄ×Ö½Úת»¯³É×Ö·û´®
  24.                 string str = Encoding.UTF8.GetString(buffer, 0, num);
  25.                 ShowMsg(connSocket.RemoteEndPoint.ToString() + ":" + str);
  26.                 }
  27.             }
  28.         }
¸´ÖÆ´úÂë
¿Í»§¶Ë´úÂë1£º
  1.         public Form1()
  2.         {
  3.             InitializeComponent();
  4.             Control.CheckForIllegalCrossThreadCalls = false;
  5.         }
  6.         //Á¬½Ó·þÎñ¶ËºÍ·¢ËÍÐÅÏ¢¶¼ÒªÓõ½Í¬Ò»¸ösocket£¬½«Æä¶¨Òåµ½Íâ±ß
  7.         Socket socket;
  8.         //Á¬½Ó·þÎñ¶Ë
  9.         private void btnConnect_Click(object sender, EventArgs e)
  10.         {
  11.             //¿Í»§¶ËÁ¬½Ó·þÎñÆ÷µÄipµØÖ·
  12.             IPAddress ip = IPAddress.Parse(txtIP.Text);
  13.             //¿Í»§¶ËÁ¬½ÓµÄ·þÎñÆ÷µÄipµØÖ·ºÍ¶Ë¿ÚºÅ
  14.             IPEndPoint point = new IPEndPoint(ip, int.Parse(txtPortNumber.Text));
  15.             //´´½¨Á¬½ÓʹÓõÄsocket
  16. socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  17.             try
  18.             {
  19.                 //Á¬½ÓÁÄÌì·þÎñÆ÷
  20.                 //·þÎñÆ÷û¿ª±¨´í
  21.                 //ÓÉÓÚÄ¿±ê¼ÆËã»ú»ý¼«¾Ü¾ø£¬ÎÞ·¨Á¬½Ó¡£
  22.                 socket.Connect(point);
  23.                 ShowMsg("Á¬½Ó³É¹¦");
  24.             }
  25.             catch (Exception ex)
  26.             {
  27.                 ShowMsg(ex.Message);
  28.             }
  29.         }
  30.         void ShowMsg(string msg)
  31.         {
  32.             txtShowMessage.AppendText(msg + "\r\n");
  33.         }
  34.         //·¢ËÍÏûÏ¢
  35.         private void btnSendMessage_Click(object sender, EventArgs e)
  36.         {
  37.             if (socket != null)
  38.             {
  39.                 byte[] buffer = Encoding.UTF8.GetBytes(txtInputMessage.Text);
  40.                 socket.Send(buffer);
  41.             }
  42.             else
  43.             {
  44.                 MessageBox.Show("ÇëÏÈÁ¬½Ó");
  45.             }
  46.         }
¸´ÖÆ´úÂë
¿Í»§¶Ë´úÂë7ÍêÉÆ——·þÎñ¶ËÖªµÀ¿Í»§¶Ë¹Ø±ÕµÄÏûÏ¢£º
  1.         //½ÓÊÕÐÅÏ¢
  2.         void RecMsg(object o)
  3.         {
  4.             //ͨÐÅÓõÄsocket
  5.             Socket connSocket = o as Socket;
  6.             //¿ÉÒÔ²»Í£µØ½ÓÊܿͻ§¶ËµÄÄÚÈÝ
  7.             while (true)
  8.             {
  9.                 //½ÓÊÜÊý¾Ý
  10.                 byte[] buffer = new byte[1024 * 1024];
  11.                 //½ÓÊÜÊý¾Ý£¬°ÑÊý¾Ý·¢µ½bufferÖÐ
  12.                 //num¾ÍÊÇʵ¼Ê½ÓÊܵ½µÄ×Ö½Ú¸öÊý
  13.                 int num = -1;
  14.                 try
  15.                 {
  16.         //Ô¶³ÌÖ÷»úÇ¿ÆÈ¹Ø±ÕÁËÒ»¸öÏÖÓеÄÁ¬½Ó¡£  µ±¿Í»§¶Ë¹Ø±Õ£¬·þÎñ¶Ëδ¹Ø±Õʱ£¬±¨´í¡£
  17.                     num = connSocket.Receive(buffer);
  18.                     //µ±telnet¹Ø±Õ£¬»á²»Í£µÄ·¢ËÍ£¨0£©¸ö×Ö½Ú  ¿Í»§¶Ë¶Ï¿ª
  19.                     if (num == 0)
  20.                     {
  21.                         ShowMsg(connSocket.RemoteEndPoint.ToString() + ":Í˳ö");
  22.                         connSocket.Shutdown(SocketShutdown.Receive);
  23.                         connSocket.Close();
  24.                         break;
  25.                     }
  26.                     //°Ñʵ¼ÊÓÐЧµÄ×Ö½Úת»¯³É×Ö·û´®
  27.                     string str = Encoding.UTF8.GetString(buffer, 0, num);
  28.                     ShowMsg(connSocket.RemoteEndPoint.ToString() + ":" + str);
  29.                 }
  30.                 catch (Exception ex)
  31.                 {
  32.                     ShowMsg(ex.Message);
  33.                     //³öÏÖÒì³££¬Ìø³öÑ­»·
  34.                     break;
  35.                 }
  36.             }
  37.         }
¸´ÖÆ´úÂë
·þÎñ¶Ë´úÂë8ÍêÉÆ——·þÎñ¶Ë¸ø¿Í»§¶Ë·¢ËÍÏûÏ¢£º
  1.         //·¢ËÍÏûÏ¢
  2.         private void btnSendMessage_Click(object sender, EventArgs e)
  3.         {
  4.             if (connSocket!=null)
  5.             {
  6.                 byte[] buffer = Encoding.UTF8.GetBytes(txtInputMessage.Text);
  7.                 try
  8.                 {
  9.                     connSocket.Send(buffer);
  10.                 }
  11.                 catch (Exception ex)
  12.                 {
  13.                     ShowMsg(ex.Message);
  14.                 }
  15.             }
  16.         }
¸´ÖÆ´úÂë
¿Í»§¶Ë´úÂë2ÍêÉÆ——¿Í»§¶Ë½ÓÊÕ·þÎñ¶Ë·¢Ë͵ÄÏûÏ¢£º
  1.         //½ÓÊÕÏûÏ¢
  2.         void RecMsg()
  3.         {
  4.             while (true)
  5.             {
  6.                 byte[] buffer = new byte[1024 * 1024];
  7.                 try
  8.                 {
  9.                     int num = socket.Receive(buffer);
  10.                     string str = Encoding.UTF8.GetString(buffer, 1, num );
  11.                     ShowMsg(str);
  12.                 }
  13.                 catch (Exception ex)
  14.                 {
  15.                     ShowMsg(ex.Message);
  16.                     break;
  17.                 }
  18.             }
  19.         }
  20. //ÓÉÓÚ½ÓÊÕÏûÏ¢ÊÇÒ»¸öËÀÑ­»·£¬ÐèÒªÓõ½Ïß³Ì
  21.                 //Ï߳̽ÓÊÜÏûÏ¢
  22.                 Thread th = new Thread(RecMsg);
  23.                 th.IsBackground = true;
  24.                 th.Start();
¸´ÖÆ´úÂë
·þÎñ¶Ë´úÂë9ÍêÉÆ——·þÎñ¶Ë¸øÖ¸¶¨¿Í»§¶Ë·¢ËÍÏûÏ¢£º
  1.         //´æ´¢Í¨ÐÅÓõÄsocket×Öµä
  2.         Dictionary<string, Socket> dic = new Dictionary<string, Socket>();
  3.         //ÏÞÖÆÁ¬½Ó¿Í»§¶ËµÄ¸öÊý
  4.         int count = 0;
  5.         //¼àÌýÊÇ·ñÓпͻ§¶ËÁ¬½Ó
  6.         void Listen(object o)
  7.         {
  8.             //¼àÌýÓõÄsocket
  9.             Socket socket = o as Socket;
  10.             //¿ÉÒÔ²»Í£µØ½ÓÊܿͻ§¶ËµÄÁ¬½Ó
  11.             while (count < 100)
  12.             {
  13.                 count++;
  14.                 //¼àÌý¶Ë¿Ú£¬Èç¹ûÓпͻ§¶ËÁ¬½Ó£¬´´½¨Í¨ÐÅÓÃsocket
  15.                 Socket connSocket = socket.Accept();
  16.                 //ÏÔʾԶ³ÌÁ¬½ÓµÄIPµØÖ·ºÍ¶Ë¿ÚºÅ
  17.                 ShowMsg(connSocket.RemoteEndPoint.ToString());
  18.                 //±¾»úµÄIPµØÖ·ºÍ¶Ë¿ÚºÅ
  19.                 //connSocket.LocalEndPoint
  20.                 //±£´æµ±Ç°µÇ¼µÄ¿Í»§¶ËµÄsocket
  21.                 string ipport = connSocket.RemoteEndPoint.ToString();
  22.                 cboUser.Items.Add(ipport);
  23.                 dic.Add(ipport, connSocket);
  24.                 //Ï߳̽ÓÊÕÐÅÏ¢
  25.                 Thread th = new Thread(RecMsg);
  26.                 th.IsBackground = true;
  27.                 th.Start(connSocket);
  28.             }
  29.         }
  30.         //·¢ËÍÏûÏ¢
  31.         private void btnSendMessage_Click(object sender, EventArgs e)
  32.         {
  33.             //»ñÈ¡ÏÂÀ­¿òÖÐÑ¡ÔñµÄipºÍ¶Ë¿ÚºÅ
  34.             string ipport = cboUser.Text;
  35.             if (!string.IsNullOrEmpty(ipport))
  36.             {
  37.                 byte[] buffer = Encoding.UTF8.GetBytes(txtInputMessage.Text);
  38.                 try
  39.                 {
  40.                     //¸ù¾Ýkey»ñµÃsocket
  41.                     Socket connSocket = dic[ipport];
  42.                     connSocket.Send(buffer);
  43.                 }
  44.                 catch (Exception ex)
  45.                 {
  46.                     ShowMsg(ex.Message);
  47.                 }
  48.             }
  49.             else
  50.             {
  51.                 MessageBox.Show("ÇëÑ¡Ôñ¿Í»§¶Ë");
  52.             }
  53.         }
¸´ÖÆ´úÂë
JavaÅàѵѧԺʼÖÕÈÏΪÄ㽫»áÊÇ×îÓÅÐãµÄ´æÔÚ£¬Äã¾ÍÊÇ×î°ôµÄ,¿´ºÃÄã,¼ÓÓÍ£¡£¡£¡
±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍJavaÅàѵѧԺËùÓУ¬»¶Ó­×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
×÷ÕߣºÀÖÓã²¥¿ÍJavaÅàѵѧԺ
Ê×·¢£ºhttp://www.itcast.cn/javaee 
0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿