private ReceivedUdpData GetMockNonNotifyRequest() { var data = String.Format(@"POST * HTTP/1.1 HOST: 239.255.255.250:1900 Date: {0} NT: uuid: 1234 NTS: ssdp:alive SERVER: TestOS/1.0 UPnP/1.0 RSSDP/1.0 USN: uuid:1234::test-schema:device:TestDeviceType:1 LOCATION: http://192.168.1.100:1701/devicedescription.xml CACHE-CONTROL: public, max-age=1800 ", DateTime.UtcNow.ToString("r") ); var retVal = new ReceivedUdpData() { Buffer = System.Text.UTF8Encoding.UTF8.GetBytes(data), ReceivedFrom = new UdpEndPoint() { IPAddress = SsdpConstants.MulticastLocalAdminAddress, Port = 1900 } }; retVal.ReceivedBytes = retVal.Buffer.Length; return(retVal); }
public Task<ReceivedUdpData> ReceiveAsync() { ThrowIfDisposed(); var taskCompletionSource = new System.Threading.Tasks.TaskCompletionSource<ReceivedUdpData>(); byte[] buffer = new byte[SsdpConstants.DefaultUdpSocketBufferSize]; _UdpClient.BeginReceiveFromGroup(buffer, 0, buffer.Length, (asyncResult) => { IPEndPoint receivedFromEndPoint; _UdpClient.EndReceiveFromGroup(asyncResult, out receivedFromEndPoint); var tcs = asyncResult.AsyncState as System.Threading.Tasks.TaskCompletionSource<ReceivedUdpData>; var result = new ReceivedUdpData() { ReceivedFrom = new UdpEndPoint() { IPAddress = receivedFromEndPoint.Address.ToString(), Port = receivedFromEndPoint.Port }, Buffer = buffer, ReceivedBytes = buffer.Length }; tcs.SetResult(result); }, taskCompletionSource ); return taskCompletionSource.Task; }
private ReceivedUdpData GetMockByeByeNotification(SsdpDevice device) { var data = String.Format(@"NOTIFY * HTTP/1.1 HOST: 239.255.255.250:1900 DATE: {0} NT: {1} NTS: ssdp:byebye SERVER: TestOS/1.0 UPnP/1.0 RSSDP/1.0 USN: {2} ", DateTime.UtcNow.ToString("r"), device.Udn, String.Format("{0}::{1}", device.Udn, device.FullDeviceType) ); var retVal = new ReceivedUdpData() { Buffer = System.Text.UTF8Encoding.UTF8.GetBytes(data), ReceivedFrom = new UdpEndPoint() { IPAddress = SsdpConstants.MulticastLocalAdminAddress, Port = 1900 } }; retVal.ReceivedBytes = retVal.Buffer.Length; return(retVal); }
private ReceivedUdpData GetMockSearchResponseWithCustomCacheHeader(SsdpDevice device, string stHeader, string cacheHeader) { var responseText = String.Format(@"HTTP/1.1 200 OK EXT: DATE: {4}{0} ST:{1} SERVER: TestOS/1.0 UPnP/1.0 RSSDP/1.0 USN:{2} LOCATION:{3} ", //Blank line at end important, do not remove. String.IsNullOrEmpty(cacheHeader) ? String.Empty : Environment.NewLine + cacheHeader, stHeader, String.Format("{0}:{1}", device.Udn, device.FullDeviceType), device.ToRootDevice().Location, DateTime.UtcNow.ToString("r") ); var retVal = new ReceivedUdpData() { Buffer = System.Text.ASCIIEncoding.UTF8.GetBytes(responseText), ReceivedFrom = new UdpEndPoint() { IPAddress = SsdpConstants.MulticastLocalAdminAddress, Port = SsdpConstants.MulticastPort } }; retVal.ReceivedBytes = retVal.Buffer.Length; return(retVal); }
private void socketEventArg_ReceiveCompleted(object sender, SocketAsyncEventArgs e) { try { var ttcs = e.UserToken as TaskCompletionSource <ReceivedUdpData>; if (e.SocketError == SocketError.Success) { var result = new ReceivedUdpData(); result.Buffer = new byte[e.BytesTransferred]; result.ReceivedBytes = e.BytesTransferred; var endPoint = e.RemoteEndPoint as IPEndPoint; result.ReceivedFrom = new UdpEndPoint() { IPAddress = endPoint.Address.ToString(), Port = endPoint.Port }; Array.Copy(e.Buffer, e.Offset, result.Buffer, 0, e.BytesTransferred); ttcs.SetResult(result); } else { ttcs.SetException(new System.Net.Sockets.SocketException((int)e.SocketError)); } } finally { e.Dispose(); } }
public Task <ReceivedUdpData> ReceiveAsync() { ThrowIfDisposed(); var taskCompletionSource = new System.Threading.Tasks.TaskCompletionSource <ReceivedUdpData>(); byte[] buffer = new byte[SsdpConstants.DefaultUdpSocketBufferSize]; _UdpClient.BeginReceiveFromGroup(buffer, 0, buffer.Length, (asyncResult) => { IPEndPoint receivedFromEndPoint; _UdpClient.EndReceiveFromGroup(asyncResult, out receivedFromEndPoint); var tcs = asyncResult.AsyncState as System.Threading.Tasks.TaskCompletionSource <ReceivedUdpData>; var result = new ReceivedUdpData() { ReceivedFrom = new UdpEndPoint() { IPAddress = receivedFromEndPoint.Address.ToString(), Port = receivedFromEndPoint.Port }, Buffer = buffer, ReceivedBytes = buffer.Length }; tcs.SetResult(result); }, taskCompletionSource ); return(taskCompletionSource.Task); }
public void MockReceiveBroadcast(ReceivedUdpData broadcastMessage) { if (!_ReceivedBroadcastsQueue.Any()) _BroadcastAvailableSignal.Reset(); _ReceivedBroadcastsQueue.Enqueue(broadcastMessage); _BroadcastAvailableSignal.Set(); }
public Task <ReceivedUdpData> ReceiveAsync() { ThrowIfDisposed(); var taskCompletionSource = new System.Threading.Tasks.TaskCompletionSource <ReceivedUdpData>(); byte[] buffer = new byte[SsdpConstants.DefaultUdpSocketBufferSize]; try { _UdpClient.BeginReceiveFromGroup(buffer, 0, buffer.Length, (asyncResult) => { IPEndPoint receivedFromEndPoint; try { _UdpClient.EndReceiveFromGroup(asyncResult, out receivedFromEndPoint); var tcs = asyncResult.AsyncState as System.Threading.Tasks.TaskCompletionSource <ReceivedUdpData>; var result = new ReceivedUdpData() { ReceivedFrom = new UdpEndPoint() { IPAddress = receivedFromEndPoint.Address.ToString(), Port = receivedFromEndPoint.Port }, Buffer = buffer, ReceivedBytes = buffer.Length }; tcs.SetResult(result); } catch (SocketException se) { if (se.SocketErrorCode == SocketError.Shutdown || se.SocketErrorCode == SocketError.OperationAborted || se.SocketErrorCode == SocketError.NotConnected) { throw new SocketClosedException(se.Message, se); } throw; } }, taskCompletionSource ); } catch (SocketException se) { if (se.SocketErrorCode == SocketError.Shutdown || se.SocketErrorCode == SocketError.OperationAborted || se.SocketErrorCode == SocketError.NotConnected) { throw new SocketClosedException(se.Message, se); } throw; } return(taskCompletionSource.Task); }
public void MockReceiveBroadcast(ReceivedUdpData broadcastMessage) { if (!_ReceivedBroadcastsQueue.Any()) { _BroadcastAvailableSignal.Reset(); } _ReceivedBroadcastsQueue.Enqueue(broadcastMessage); _BroadcastAvailableSignal.Set(); }
public void MockReceiveMessage(ReceivedUdpData message) { if (!_ReceivedMessageQueue.Any()) { _MessageAvailableSignal.Reset(); } _ReceivedMessageQueue.Enqueue(message); _MessageAvailableSignal.Set(); }
public Task <ReceivedUdpData> ReceiveAsync() { return(Task.Run <ReceivedUdpData>(() => { ReceivedUdpData data = null; while (!_ReceivedData.TryDequeue(out data)) { _DataAvailableSignal.WaitOne(); } _DataAvailableSignal.Reset(); return data; })); }
private void _Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender, Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args) { using (var reader = args.GetDataReader()) { var data = new ReceivedUdpData() { ReceivedBytes = Convert.ToInt32(reader.UnconsumedBufferLength), ReceivedFrom = new UdpEndPoint() { IPAddress = args.RemoteAddress.RawName, Port = Convert.ToInt32(args.RemotePort) } }; data.Buffer = new byte[data.ReceivedBytes]; reader.ReadBytes(data.Buffer); _ReceivedData.Enqueue(data); _DataAvailableSignal.Set(); } }
private ReceivedUdpData GetMockAliveNotification(SsdpDevice device) { var rootDevice = device.ToRootDevice(); var data = String.Format(@"NOTIFY * HTTP/1.1 HOST: 239.255.255.250:1900 Date: {0} NT: {1} NTS: ssdp:alive SERVER: TestOS/1.0 UPnP/1.0 RSSDP/1.0 USN: {2} LOCATION: {3} CACHE-CONTROL: public, max-age={4} ", DateTime.UtcNow.ToString("r"), device.Udn, String.Format("{0}::{1}", device.Udn, device.FullDeviceType), rootDevice.Location, rootDevice.CacheLifetime.TotalSeconds ); var retVal = new ReceivedUdpData() { Buffer = System.Text.UTF8Encoding.UTF8.GetBytes(data), ReceivedFrom = new UdpEndPoint() { IPAddress = SsdpConstants.MulticastLocalAdminAddress, Port = 1900 } }; retVal.ReceivedBytes = retVal.Buffer.Length; return(retVal); }
private ReceivedUdpData GetMockSearchResponseWithCustomCacheHeader(SsdpDevice device, string stHeader, string cacheHeader) { var responseText = String.Format(@"HTTP/1.1 200 OK EXT: DATE: {4}{0} ST:{1} SERVER: TestOS/1.0 UPnP/1.0 RSSDP/1.0 USN:{2} LOCATION:{3} ", //Blank line at end important, do not remove. String.IsNullOrEmpty(cacheHeader) ? String.Empty : Environment.NewLine + cacheHeader, stHeader, String.Format("{0}:{1}", device.Udn, device.FullDeviceType), device.ToRootDevice().Location, DateTime.UtcNow.ToString("r") ); var retVal = new ReceivedUdpData() { Buffer = System.Text.ASCIIEncoding.UTF8.GetBytes(responseText), ReceivedFrom = new UdpEndPoint() { IPAddress = SsdpConstants.MulticastLocalAdminAddress, Port = SsdpConstants.MulticastPort } }; retVal.ReceivedBytes = retVal.Buffer.Length; return retVal; }
private ReceivedUdpData GetMockNonNotifyRequest() { var data = String.Format(@"POST * HTTP/1.1 HOST: 239.255.255.250:1900 Date: {0} NT: uuid: 1234 NTS: ssdp:alive SERVER: TestOS/1.0 UPnP/1.0 RSSDP/1.0 USN: uuid:1234::test-schema:device:TestDeviceType:1 LOCATION: http://192.168.1.100:1701/devicedescription.xml CACHE-CONTROL: public, max-age=1800 ", DateTime.UtcNow.ToString("r") ); var retVal = new ReceivedUdpData() { Buffer = System.Text.UTF8Encoding.UTF8.GetBytes(data), ReceivedFrom = new UdpEndPoint() { IPAddress = SsdpConstants.MulticastLocalAdminAddress, Port = 1900 } }; retVal.ReceivedBytes = retVal.Buffer.Length; return retVal; }
private ReceivedUdpData GetMockByeByeNotification(SsdpDevice device) { var data = String.Format(@"NOTIFY * HTTP/1.1 HOST: 239.255.255.250:1900 DATE: {0} NT: {1} NTS: ssdp:byebye SERVER: TestOS/1.0 UPnP/1.0 RSSDP/1.0 USN: {2} ", DateTime.UtcNow.ToString("r"), device.Udn, String.Format("{0}::{1}", device.Udn, device.FullDeviceType) ); var retVal = new ReceivedUdpData() { Buffer = System.Text.UTF8Encoding.UTF8.GetBytes(data), ReceivedFrom = new UdpEndPoint() { IPAddress = SsdpConstants.MulticastLocalAdminAddress, Port = 1900 } }; retVal.ReceivedBytes = retVal.Buffer.Length; return retVal; }
private ReceivedUdpData GetMockAliveNotification(SsdpDevice device) { var rootDevice = device.ToRootDevice(); var data = String.Format(@"NOTIFY * HTTP/1.1 HOST: 239.255.255.250:1900 Date: {0} NT: {1} NTS: ssdp:alive SERVER: TestOS/1.0 UPnP/1.0 RSSDP/1.0 USN: {2} LOCATION: {3} CACHE-CONTROL: public, max-age={4} ", DateTime.UtcNow.ToString("r"), device.Udn, String.Format("{0}::{1}", device.Udn, device.FullDeviceType), rootDevice.Location, rootDevice.CacheLifetime.TotalSeconds ); var retVal = new ReceivedUdpData() { Buffer = System.Text.UTF8Encoding.UTF8.GetBytes(data), ReceivedFrom = new UdpEndPoint() { IPAddress = SsdpConstants.MulticastLocalAdminAddress, Port = 1900 } }; retVal.ReceivedBytes = retVal.Buffer.Length; return retVal; }
public void MockReceiveMessage(ReceivedUdpData message) { if (!_ReceivedMessageQueue.Any()) _MessageAvailableSignal.Reset(); _ReceivedMessageQueue.Enqueue(message); _MessageAvailableSignal.Set(); }
private void socketEventArg_ReceiveCompleted(object sender, SocketAsyncEventArgs e) { try { var ttcs = e.UserToken as TaskCompletionSource<ReceivedUdpData>; if (e.SocketError == SocketError.Success) { var result = new ReceivedUdpData(); result.Buffer = new byte[e.BytesTransferred]; result.ReceivedBytes = e.BytesTransferred; var endPoint = e.RemoteEndPoint as IPEndPoint; result.ReceivedFrom = new UdpEndPoint() { IPAddress = endPoint.Address.ToString(), Port = endPoint.Port }; Array.Copy(e.Buffer, e.Offset, result.Buffer, 0, e.BytesTransferred); ttcs.SetResult(result); } else ttcs.SetException(new System.Net.Sockets.SocketException((int)e.SocketError)); } finally { e.Dispose(); } }
private ReceivedUdpData GetSearchRequestMessageWithoutMXHeader(string searchTarget) { var retVal = new ReceivedUdpData(); retVal.Buffer = System.Text.UTF8Encoding.UTF8.GetBytes(String.Format(@"M-SEARCH * HTTP/1.1 HOST: {0}:{1} MAN: ""ssdp:discover"" ST: {2} ", SsdpConstants.MulticastLocalAdminAddress, SsdpConstants.MulticastPort, searchTarget)); retVal.ReceivedFrom = new UdpEndPoint() { IPAddress = "192.168.1.100", Port = 1701 }; retVal.ReceivedBytes = retVal.Buffer.Length; return retVal; }