2013-03-28 7 views
7

तो यह छोटा कोड स्निपेट मिला जो आपको PHP में Minecraft सर्वर पिंग करने की अनुमति देगा, लेकिन अब मैं इसे सी # में करना चाहता हूं।सी # पिंग Minecraft

मैं अपने दम पर, लेकिन किसी कारण से ऐसा करने की कोशिश की है अपने बस काम नहीं कर रहा

 UdpClient client = new UdpClient(); 
     IPEndPoint ep; 
     try 
     { 
      ep = new IPEndPoint(IPAddress.Parse("-snip-"), -snip-); 
      client.Connect(ep); 
     } 
     catch { Console.WriteLine("Error"); Console.ReadLine(); return; } 
     byte[] bytes = new byte[1]; 
     bytes[0] = (byte)0xFE; 
     client.Send(bytes, bytes.Length); 
     IPEndPoint rep = new IPEndPoint(IPAddress.Any, 0); 
     byte[] recv = client.Receive(ref rep); 
     Console.WriteLine(ASCIIEncoding.ASCII.GetString(recv)); 
     Console.ReadLine(); 

सर्वर अभी पूरी तरह से पैकेट की अनदेखी करने लगती है। यह कोड स्निपेट है जो मैंने पाया:

$fp = fsockopen($host, $port, $errno, $errstr, $timeout); 
    if (!$fp) return false; 

    //Send 0xFE: Server list ping 

    fwrite($fp, "\xFE"); 

    //Read as much data as we can (max packet size: 241 bytes) 
    $d = fread($fp, 256); 

    //Check we've got a 0xFF Disconnect 
    if ($d[0] != "\xFF") return false; 

क्या कोई यह बता सकता है कि मैं कौन सी गलती कर रहा हूं? धन्यवाद!

+0

शायद आईपी पर विचार यह एक पूरी तरह से सार्वजनिक स्थान है निकालना चाहते हैं। –

+0

पहला कोड स्निपेट जिसे मैंने सी # में बनाया है, दूसरा दूसरा PHP में स्निपेट है जिसे मैंने कहीं कहीं स्टैक ओवरफ्लो – user2073973

उत्तर

9

के रूप में वर्णित here

ग्राहक एक टीसीपी मानक पोर्ट पर Minecraft सर्वर से कनेक्शन आरंभ करता है। ऑथ करने और लॉग इन करने के बजाय (जैसा कि प्रोटोकॉल एन्क्रिप्शन में विस्तृत है), यह दो बाइट अनुक्रम एफई 01 भेजता है। यह 0xFE सर्वर सूची पिंग पैकेट है। यदि दूसरा बाइट (0x01) गुम है, तो सर्वर लगभग 1000ms तक प्रतीक्षा करता है, फिर सर्वर -> क्लाइंट प्रारूप 1.3 और इससे पहले उपयोग किया जाता है।

आप एक टीसीपी अनुरोध है कि आप एक यूडीपी पैकेट भेज रहे हैं जबकि भेजने की जरूरत है ...

+0

पर पाया है, ओह वाह, मुझे लगता है कि Minecraft यूडीपी प्रोटोकॉल का उपयोग करता है, यह पिंग के लिए यूडीपी प्रोटोकॉल का भी उपयोग करेगा पैकेट। धन्यवाद! – user2073973

+0

अब अच्छा काम कर रहा है! – user2073973

+0

@ user2073973 अच्छा फॉर्म अगर आप अपनी समस्या हल करते हैं तो एक जवाब स्वीकार करना है। – Yaur

संबंधित मुद्दे