private async void OnConnection(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { Debug.LogError("New client" + sender.Information.LocalPort); var reader = new Windows.Storage.Streams.DataReader(args.Socket.InputStream); try { while (true) { // Read first 4 bytes (length of the subsequent string). uint sizeFieldCount = await reader.LoadAsync(sizeof(uint)); if (sizeFieldCount != sizeof(uint)) { // The underlying socket was closed before we were able to read the whole data. return; } // Read the string. uint stringLength = reader.ReadUInt32(); uint actualStringLength = await reader.LoadAsync(stringLength); if (stringLength != actualStringLength) { // The underlying socket was closed before we were able to read the whole data. return; } // Display the string on the screen. The event is invoked on a non-UI thread, so we need to marshal // the text back to the UI thread. //NotifyUserFromAsyncThread( // String.Format("Received data: \"{0}\"", reader.ReadString(actualStringLength)), // NotifyType.StatusMessage); } } catch (Exception ex) { Debug.LogException(ex); // If this is an unknown status it means that the error is fatal and retry will likely fail. if (Windows.Networking.Sockets.SocketError.GetStatus(ex.HResult) == Windows.Networking.Sockets.SocketErrorStatus.Unknown) { throw; } } }
private void SocketListener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { Debug.WriteLine("connessione ricevuta"); //Read line from the remote client. Stream inStream = args.Socket.InputStream.AsStreamForRead(); outStream = args.Socket.OutputStream.AsStreamForWrite(); msgCount = 0; int byteCount = 0; BinaryReader reader = new BinaryReader(inStream); Boolean connOn = true; while (connOn) { try { byte request = reader.ReadByte(); byteCount++; string hexOutput = String.Format("{0:X2}", request); Debug.Write(hexOutput); //await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, //() => //{ // textBlock.Text += hexOutput; //}); if (byteCount == msgLenght[msgCount]) { byteCount = 0; msgSend(); if (msgCount < 3) { msgCount++; } } } catch { Debug.WriteLine("Remote host closed connection"); connOn = false; } } }
/// <summary> /// trys to read a string from the socket and send it back /// </summary> private async void SocketListener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { //Read line from the remote client. Stream inStream = args.Socket.InputStream.AsStreamForRead(); StreamReader reader = new StreamReader(inStream); string request = await reader.ReadLineAsync(); Debug.WriteLine("request: " + request); //Send the line back to the remote client. Stream outStream = args.Socket.OutputStream.AsStreamForWrite(); StreamWriter writer = new StreamWriter(outStream); await writer.WriteLineAsync(request); await writer.FlushAsync(); }
private async void SocketListener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { // Read line from the remote client. inStream = args.Socket.InputStream.AsStreamForRead(); streamReader = new StreamReader(inStream); // Add timeout function (ms) // streamReader.BaseStream.ReadTimeout = 3000; string request = await streamReader.ReadLineAsync(); try { await CheckCommand(request, args); } catch (Exception e) { Debug.WriteLine("Command Execution Fault..."); Debug.WriteLine(e); } }
/// <summary> /// We have to have a callback handler to handle "ConnectionReceived" but we don't do anything because /// the StartAdvertising is just a way to turn on Bluetooth discoverability /// </summary> /// <param name="listener"></param> /// <param name="args"></param> void OnConnectionReceived(Windows.Networking.Sockets.StreamSocketListener listener, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { }
private void _listener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { _connection.Open(args.Socket); }
public async void StreamSocketListener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { string request; using (var streamReader = new StreamReader(args.Socket.InputStream.AsStreamForRead())) { request = await streamReader.ReadLineAsync(); } Message = request; //// Echo the request back as the response. //using (Stream outputStream = args.Socket.OutputStream.AsStreamForWrite()) //{ // using (var streamWriter = new StreamWriter(outputStream)) // { // await streamWriter.WriteLineAsync(request); // await streamWriter.FlushAsync(); // } //} sender.Dispose(); }
private void _listener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { _server.ClientConnected(args.Socket); }
/// <summary> /// Event handler for handling incoming connections and save the mesh data /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private async void StreamSocketListener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { using (var stream = args.Socket.InputStream.AsStreamForRead()) { // TODO Make sure there is data in the stream. // The first 4 bytes will be the size of the data containing the mesh(es). int datasize = ReadInt(stream); // Allocate a buffer to hold the data. byte[] dataBuffer = new byte[datasize]; // Read the data. // The data can come in chunks. int readsize = 0; while (readsize != datasize) { readsize += stream.Read(dataBuffer, readsize, datasize - readsize); } System.Diagnostics.Debug.WriteLine("Received:" + datasize + "bytes"); ReceivedMeshes.Enqueue(dataBuffer); } }
private void _listener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { ConnectionReceived?.Invoke(this, new RfcommConnectionReceivedEventArgs(new NetworkStream(args.Socket))); }
/// <summary> /// A listener object that responds when ever there has been a connection established /// </summary> /// <param name="sender"> /// /// </param> /// <param name="args"> /// /// </param> private async void ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { string request; using (var streamReader = new StreamReader(args.Socket.InputStream.AsStreamForRead())) { request = await streamReader.ReadLineAsync(); } this.Output(MessageHelper.MessageType.Data, request); // if responder exists then respond else don't bother if (responderObject != null) { // deal with the responce appropriately string responce = responderObject.Respond(ref request); using (var streamWriter = new StreamWriter(args.Socket.OutputStream.AsStreamForWrite())) { // call the responder object and send back the responce streamWriter.WriteLine(responce); // output the message to the helper if it exists this.Output(MessageHelper.MessageType.Status, string.Format("server acted on the response: \"{0}\" appropiatly", responce)); } } }
private async void StreamSocketListener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { using (var dataReader = new DataReader(args.Socket.InputStream)) { dataReader.InputStreamOptions = InputStreamOptions.Partial; while (true) { await dataReader.LoadAsync(256); if (dataReader.UnconsumedBufferLength == 0) { break; } IBuffer requestBuffer = dataReader.ReadBuffer(dataReader.UnconsumedBufferLength); string request = Windows.Security.Cryptography.CryptographicBuffer.ConvertBinaryToString(Windows.Security.Cryptography.BinaryStringEncoding.Utf8, requestBuffer); Debug.WriteLine(string.Format("server received the request: \"{0}\"", request)); } } }
private async void StreamSocketListener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { //string request=""; string response; char[] chars = new char[10]; chars[1] = 'Z'; int responseLength; byte cFineStructureConstant = 137; try { using (var streamReader = new StreamReader(args.Socket.InputStream.AsStreamForRead())) { using (Stream outputStream = args.Socket.OutputStream.AsStreamForWrite()) { using (var streamWriter = new StreamWriter(outputStream)) { if (_Mode == Mode.Disconnected) { response = await streamReader.ReadLineAsync(); await streamWriter.WriteLineAsync("Hello World"); await streamWriter.FlushAsync(); await streamWriter.WriteAsync('@'); await streamWriter.FlushAsync(); //Once the first transmission/s, iniitaited from thsi end, is received then this end IS connected. _Mode = Mode.Connected; responseLength = await streamReader.ReadAsync(chars, 0, 10); await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => recvdText.Text = "" + chars); if (chars[0] == '0') { await streamWriter.WriteAsync('1'); await streamWriter.FlushAsync(); } _Mode = Mode.ACK0; responseLength = await streamReader.ReadAsync(chars, 0, 10); await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => recvdText.Text = "" + chars[0]); if (chars[0] == '2') { await streamWriter.WriteAsync('3'); await streamWriter.FlushAsync(); } _Mode = Mode.ACK2; responseLength = await streamReader.ReadAsync(chars, 0, 10); await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => recvdText.Text = "" + chars[0]); if (chars[0] == '4') { await streamWriter.WriteAsync('5'); await streamWriter.FlushAsync(); } _Mode = Mode.ACK4; responseLength = await streamReader.ReadAsync(chars, 0, 10); await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => recvdText.Text = "" + chars[0]); if (chars[0] == '!') { await streamWriter.WriteAsync('/'); await streamWriter.FlushAsync(); } _Mode = Mode.Ready; responseLength = await streamReader.ReadAsync(chars, 0, 1); await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => recvdText.Text = "" + chars[0]); if (chars[0] == '/') { _Mode = Mode.Json1; await streamWriter.WriteLineAsync( "{\"Config\":[ [ { \"iWidth\": 120 },{ \"iHeight\": 100 },{ \"iSpace\": 5 },{ \"iCornerRadius\": 10 },{ \"iRows\": 2 },{ \"iColumns\": 5 },{ \"sComPortId\": \"\\\\\\\\?\\\\USB#VID_26BA&PID_0003#5543830353935161A112#{86e0d1e0-8089-11d0-9ce4-08003e301f73}\" },{ \"sFTDIComPortId\": \"\\\\\\\\?\\\\FTDIBUS#VID_0403+PID_6001+FTG71BUIA#0000#{86e0d1e0-8089-11d0-9ce4-08003e301f73}\" },{ \"iComportConnectDeviceNo\": -1 },{ \"iFTDIComportConnectDeviceNo\": 1 },{ \"sUseSerial\": \"BT\" } ] ] }~"); await streamWriter.FlushAsync(); responseLength = await streamReader.ReadAsync(chars, 0, 1); await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => recvdText.Text = "" + chars[0]); { if (chars[0] == '~') { _Mode = Mode.Json2; await streamWriter.WriteLineAsync( "{\"MainMenu\":[ [ \"Something else\", \"Unload\", \"Show full list\", \"Setup Sockets\", \"The quick brown fox jumps over the lazy dog\" ],[ \"First\", \"Back\", \"Next\", \"Last\", \"Show All\" ] ] }~"); await streamWriter.FlushAsync(); _Mode = Mode.Running; } ; } } bool listening = true; _Mode = Mode.Running; while (listening) { try { responseLength = await streamReader.ReadAsync(chars, 0, 1); } catch (Exception ex) { await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => status.Text += "\r\n" + "Lost connection:\r\n" + ex.Message); listening = false; } if (listening) { switch (chars[0]) { case '^': listening = false; break; default: //Do app stuff here. For now just echo chars sent await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => status.Text += "" + chars[0]); try { await streamWriter.WriteAsync(chars[0]); await streamWriter.FlushAsync(); } catch (Exception ex) { await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => status.Text += "\r\n" + "Lost connection:\r\n" + ex.Message); listening = false; } break; } } } } } } } } catch (Exception ex) { await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => status.Text += "\r\n" + "Lost connection:\r\n" + ex.Message); } //await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => status.Text = string.Format("server sent back the response: \"{0}\"", request)); sender.Dispose(); //await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => status.Text = "server closed its socket"); ; }
private async void StreamSocketListener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { string request; using (var streamReader = new StreamReader(args.Socket.InputStream.AsStreamForRead())) { request = await streamReader.ReadLineAsync(); } await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => ShowMessage(string.Format("server received the request: \"{0}\"", request))); // Echo the request back as the response. using (Stream outputStream = args.Socket.OutputStream.AsStreamForWrite()) { using (var streamWriter = new StreamWriter(outputStream)) { await streamWriter.WriteLineAsync(request); await streamWriter.FlushAsync(); } } await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => ShowMessage(string.Format("server sent back the response: \"{0}\"", request))); sender.Dispose(); await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => ShowMessage("server closed its socket")); }
// http://garicchi.com/?p=5891 // string CheckCommand(String msg) private async Task CheckCommand(String msg, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args) { await Task.Run(async() => { string result = ""; outStream = args.Socket.OutputStream.AsStreamForWrite(); streamWriter = new StreamWriter(outStream); await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() => { try { Debug.WriteLine(msg); switch (msg) { case "ECHO": result = await streamReader.ReadLineAsync(); break; case "IMAGE": // change mode to image mode and set the specified picture rootFrame.ContentTransitions = new TransitionCollection(); rootFrame.ContentTransitions.Add(new NavigationThemeTransition()); rootFrame.Navigate(typeof(ImagePage)); result = "OK"; break; case "VIDEO": // change mode to video mode and set the specified video rootFrame.ContentTransitions = new TransitionCollection(); rootFrame.ContentTransitions.Add(new NavigationThemeTransition()); rootFrame.Navigate(typeof(VideoPage)); result = "OK"; break; case "LIVE": // change mode to live mode rootFrame.ContentTransitions = new TransitionCollection(); rootFrame.ContentTransitions.Add(new NavigationThemeTransition()); rootFrame.Navigate(typeof(LivePage)); result = "OK"; break; case "BLANK": // change mode to blank mode rootFrame.ContentTransitions = new TransitionCollection(); rootFrame.ContentTransitions.Add(new NavigationThemeTransition()); rootFrame.Navigate(typeof(BlankPage)); result = "OK"; break; case "HOME": // change mode to blank mode rootFrame.ContentTransitions = new TransitionCollection(); rootFrame.ContentTransitions.Add(new NavigationThemeTransition()); rootFrame.Navigate(typeof(StartPage)); rootFrame.BackStack.Clear(); result = "OK"; break; case "NEXT": Debug.WriteLine(App.GetMode()); switch (App.GetMode()) { case "ImagePage": ImagePage.NextImage(); break; case "VideoPage": VideoPage.NextVideo(); break; default: break; } result = "OK"; break; case "PREVIOUS": switch (App.GetMode()) { case "ImagePage": ImagePage.PreviousImage(); break; case "VideoPage": VideoPage.PreviousVideo(); break; default: break; } result = "OK"; break; case "SET_IMAGE_BY_ID": { string id = await streamReader.ReadLineAsync(); ImagePage.SetImageIndex(int.Parse(id)); result = "OK"; break; } case "SET_VIDEO_BY_ID": { string id = await streamReader.ReadLineAsync(); VideoPage.SetVideoIndex(int.Parse(id)); result = "OK"; break; } case "TOGGLE_FULLSCREEN": { if (Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().IsFullScreenMode) { Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().ExitFullScreenMode(); } else { Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().TryEnterFullScreenMode(); } break; } case "GET_MODE": result = App.GetMode(); break; case "GET_IMAGE_THUMBS": result = await SendImageThumbsAsync(); break; case "GET_VIDEO_THUMBS": result = await SendVideoThumbsAsync(); break; default: result = "Invalid command."; break; } } catch { Debug.WriteLine("Failed to send command."); result = "Failed to send command."; } }); // send back result strings //await writer.WriteLineAsync(result); //await writer.FlushAsync(); streamWriter.WriteLine(result); streamWriter.Flush(); Debug.WriteLine(result); }); }