internal void Discover(NetPeer peer)
            {
                string str =
    "M-SEARCH * HTTP/1.1\r\n" +
    "HOST: 239.255.255.250:1900\r\n" +
    "ST:upnp:rootdevice\r\n" +
    "MAN:\"ssdp:discover\"\r\n" +
    "MX:3\r\n\r\n";

                m_status = UPnPStatus.Discovering;

                byte[] arr = System.Text.Encoding.UTF8.GetBytes(str);

                m_peer.LogDebug("Attempting UPnP discovery");
                peer.Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
                peer.RawSend(arr, 0, arr.Length, new IPEndPoint(IPAddress.Broadcast, 1900));
                peer.Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, false);

                // allow some extra time for router to respond
                // System.Threading.Thread.Sleep(50);

                m_discoveryResponseDeadline = (float)NetTime.Now + 6.0f; // arbitrarily chosen number, router gets 6 seconds to respond
                m_status = UPnPStatus.Discovering;
            }
示例#2
0
 public void SendToForeign(IPEndPoint ipEndPoint, byte[] data, int offset, int length)
 {
     _peer.RawSend(data, offset, length, ipEndPoint);
 }