Exemplo n.º 1
0
        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;
                }
            }
        }
Exemplo n.º 2
0
        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;
                }
            }
        }
Exemplo n.º 3
0
        /// <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();
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
 /// <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)
 {
 }
Exemplo n.º 6
0
 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();
        }
Exemplo n.º 8
0
 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);
            }
        }
Exemplo n.º 10
0
 private void _listener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args)
 {
     ConnectionReceived?.Invoke(this, new RfcommConnectionReceivedEventArgs(new NetworkStream(args.Socket)));
 }
Exemplo n.º 11
0
        /// <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));
                }
            }
        }
Exemplo n.º 12
0
        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));
                }
            }
        }
Exemplo n.º 13
0
        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"); ;
        }
Exemplo n.º 14
0
        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"));
        }
Exemplo n.º 15
0
        // 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);
            });
        }