Exemplo n.º 1
0
        private static async Task <bool> IsServerTheAwake()
        {
            ResourceLoader config  = ResourceLoader.GetForViewIndependentUse("Config");
            bool           isAwake = false;
            StreamSocket   socket  = new StreamSocket();

            Windows.Networking.HostName serverHost = new Windows.Networking.HostName(config.GetString("NetworkHelper_HostName"));
            string serverPort = config.GetString("NetworkHelper_Port");

            try
            {
                await socket.ConnectAsync(serverHost, serverPort);

                isAwake = true;
                await socket.CancelIOAsync();
            }
            catch (System.Runtime.InteropServices.COMException ex)
            {
                await _log.InfoAsync("Der Server ist nicht eingeschaltet", ex);
            }
            catch (Exception ex)
            {
                await _log.ErrorAsync("Die Überprüfung, ob der Server eingeschaltet ist, ist fehlgeschlagen.", ex);
            }
            finally
            {
                socket.Dispose();
            }
            return(isAwake);
        }
Exemplo n.º 2
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                ////Create the StreamSocket and establish a connection to the echo server.
                //Windows.Networking.Sockets.StreamSocket socket = new Windows.Networking.Sockets.StreamSocket();

                //The server hostname that we will be establishing a connection to. We will be running the server and client locally,
                //so we will use localhost as the hostname.
                Windows.Networking.HostName serverHost = new Windows.Networking.HostName("133.37.56.223");

                //Every protocol typically has a standard port number. For example HTTP is typically 80, FTP is 20 and 21, etc.
                //For the echo server/client application we will use a random port 1337.
                string serverPort = "50005";
                await socket.ConnectAsync(serverHost, serverPort);

                while (true)
                {
                    //Read data from the echo server.
                    Stream       streamIn = socket.InputStream.AsStreamForRead();
                    StreamReader reader   = new StreamReader(streamIn);
                    System.Diagnostics.Debug.WriteLine("ok");
                    string response = await reader.ReadLineAsync(); //サーバからの入力待ち

                    textblock.Text = response;
                }
            }
            catch (Exception)
            {
                //Handle exception here.
            }
        }
Exemplo n.º 3
0
        private async void btnConnect_Click(object sender, RoutedEventArgs e)
        {
            Windows.Networking.Sockets.DatagramSocket socket = new Windows.Networking.Sockets.DatagramSocket();

            socket.MessageReceived += Socket_MessageReceived;

            //You can use any port that is not currently in use already on the machine. We will be using two separate and random
            //ports for the client and server because both the will be running on the same machine.
            string serverPort = "8001";
            string clientPort = "8002";

            //Because we will be running the client and server on the same machine, we will use localhost as the hostname.
            Windows.Networking.HostName serverHost = new Windows.Networking.HostName("127.0.0.1");

            //Bind the socket to the clientPort so that we can start listening for UDP messages from the UDP echo server.
            await socket.BindServiceNameAsync(clientPort);

            await socket.ConnectAsync(serverHost, serverPort);

            //Write a message to the UDP echo server.
            Stream       streamOut = (await socket.GetOutputStreamAsync(serverHost, serverPort)).AsStreamForWrite();
            StreamWriter writer    = new StreamWriter(streamOut);
            string       message   = "I'm the message from client!";
            await writer.WriteLineAsync(message);

            await writer.FlushAsync();
        }
Exemplo n.º 4
0
        private async void ListenSock(string dest, string port)
        {
            try {
                //Create the StreamSocket and establish a connection to the echo server.
                clientSocket = new StreamSocket();

                //The server hostname that we will be establishing a connection to. We will be running the server and client locally,
                //so we will use localhost as the hostname.
                Windows.Networking.HostName serverHost = new Windows.Networking.HostName(dest);

                //Every protocol typically has a standard port number. For example HTTP is typically 80, FTP is 20 and 21, etc.
                //For the echo server/client application we will use a random port 1337.
                await clientSocket.ConnectAsync(serverHost, port);

                status.Text = "Socket succesfully connected!";

                dataReaderObject = new DataReader(clientSocket.InputStream);
//                ReadCancellationTokenSource.CancelAfter(2000);

                pMan.TIMEOUT = 1000;

                while (true)
                {
                    await ReadAsync(ReadCancellationTokenSource.Token);
                }
            } catch (Exception ex1) {
                status.Text = ex1.Message;
                CloseDevice();
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Opens an kerberos encrypted connection to a server.
        /// </summary>
        /// <param name="IP">Hostname or IP-Address.</param>
        /// <param name="RemotePort">Target port of the remote server.</param>
        /// <param name="PColl">The Portal Collection.</param>
        /// <param name="Kerberos">The Kerberos connectionsettings.</param>
        /// <returns>Returns the link of the connection.</returns>
        /// <exception cref="System.Net.Sockets.SocketException">Thrown if vaser is unable to create a socket or a connection.</exception>

        /*public static Link ConnectClient(string IP, int RemotePort, PortalCollection PColl, VaserKerberosClient Kerberos)
         * {
         *  //if (Mode == VaserOptions.ModeSSL) throw new Exception("Missing X509Certificate2");
         *  if (PColl == null) throw new Exception("PortalCollection is needed!");
         *
         *  try
         *  {
         *      //TcpClient client = new TcpClient();
         *      Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
         *      StreamSocket s = new StreamSocket();
         *      client.Connect(IP, Port);
         *      if (client.Connected)
         *      {
         *          StreamSocket client = new StreamSocket();
         *          Windows.Networking.HostName serverHost = new Windows.Networking.HostName(IP);
         *          await client.ConnectAsync(serverHost, RemotePort.ToString(), SocketProtectionLevel.);
         *
         *          PColl._Active = true;
         *          Connection con = new Connection(client, false, VaserOptions.ModeKerberos, PColl, null, null, Kerberos, null);
         *
         *          lock (Link._Static_ThreadLock)
         *          {
         *              Link.LinkList.Add(con.link);
         *          }
         *
         *          return con.link;
         *      }
         *      else
         *      {
         *          return null;
         *      }
         *  }
         *  catch (Exception e)
         *  {
         *      throw e;
         *  }
         * }*/

        /// <summary>
        /// Connect to a Vaser server via SSL.
        /// </summary>
        /// <param name="IP">Hostname or IP-Address.</param>
        /// <param name="RemotePort">Target port of the remote server.</param>
        /// <param name="PColl">The Portal Collection.</param>
        /// <param name="SSL">The SSL connectionsettings.</param>
        /// <returns>Returns the link of the connection.</returns>
        /// <exception cref="System.Net.Sockets.SocketException">Thrown if vaser is unable to create a socket or a connection.</exception>
        public static async System.Threading.Tasks.Task <Link> ConnectClient(string IP, int RemotePort, PortalCollection PColl, VaserSSLClient SSL)
        {
            if (SSL == null)
            {
                throw new Exception("Missing SSL options in ConnectClient(...)");
            }
            if (PColl == null)
            {
                throw new Exception("PortalCollection is needed!");
            }

            try
            {
                StreamSocket client = new StreamSocket();
                Windows.Networking.HostName serverHost = new Windows.Networking.HostName(IP);
                await client.ConnectAsync(serverHost, RemotePort.ToString(), SocketProtectionLevel.Tls12);

                PColl._Active = true;
                Connection con = new Connection(client, false, VaserOptions.ModeSSL, PColl, null, null, null, SSL);

                return(con.link);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Exemplo n.º 6
0
        public async void SendTCPAsync(string message)
        {
            try
            {
                tcpClientSocket = new StreamSocket();

                Windows.Networking.HostName serverHost = new Windows.Networking.HostName(HupIPAddress);


                await tcpClientSocket.ConnectAsync(serverHost, TCPSenderPort.ToString());


                using (Stream outputStream = tcpClientSocket.OutputStream.AsStreamForWrite())
                {
                    using (StreamWriter streamWriter = new StreamWriter(outputStream))
                    {
                        await streamWriter.WriteLineAsync(message);

                        await streamWriter.FlushAsync();
                    }
                }
            }
            catch
            {
                // Console.WriteLine("error sending TCP message");
            }
        }
Exemplo n.º 7
0
        public static async void Send(string str, string ip = "192.168.1.40", bool isBroadcast = false)
        {
            try
            {
                using (var socket = new DatagramSocket())
                {
                    if (isBroadcast)
                    {
                        socket.Control.MulticastOnly = false;
                    }

                    var hn = new Windows.Networking.HostName(ip);
                    using (Stream outStream = (await socket.GetOutputStreamAsync(hn, Utils.devicesUDPPort.ToString())).AsStreamForWrite())
                    {
                        using (var streamWriter = new StreamWriter(outStream))
                        {
                            await streamWriter.WriteAsync(str);

                            await streamWriter.FlushAsync();
                        }
                    }
                }
                gameBrain.Debug("message sent via UDP: " + str + " @" + ip + ":" + Utils.devicesUDPPort + "Broadcast: " + isBroadcast);
            }
            catch (Exception e)
            {
                gameBrain.Debug(e.Message);
            }
        }
Exemplo n.º 8
0
 /// <summary>
 /// Creates a TCP client object for use,
 /// </summary>
 /// <param name="hostName">
 ///
 /// </param>
 /// <param name="portNumber">
 ///
 /// </param>
 /// <param name="messageService">
 ///
 /// </param>
 /// <param name="responder">
 ///
 /// </param>
 public TCPClient(string hostName = NetworkingLibaryCore.LocalHostName, string portNumber = NetworkingLibaryCore.DefaultServiceName, IDisplayMessage messageService = null, ITCPResponder responder = null)
 {
     this.portNumber     = portNumber;
     this.hostName       = new Windows.Networking.HostName(hostName);
     this.messageService = messageService;
     this.responder      = responder;
 }
Exemplo n.º 9
0
        private async Task <bool> Reconnect()
        {
            try
            {
                _serverHost = new Windows.Networking.HostName(_IPAddress);
                // Try to connect to the
                _clientSocket.Dispose();
                _clientSocket = new StreamSocket();
                await _clientSocket.ConnectAsync(_serverHost, _port);

                return(true);
            }
            catch (Exception ex)
            {
                // If this is an unknown status,
                // it means that the error is fatal and retry will likely fail.
                if (SocketError.GetStatus(ex.HResult) == SocketErrorStatus.Unknown)
                {
                    throw;
                }

                // Could retry the connection, but for this simple example
                // just close the socket.

                _closing = true;
                // the Close method is mapped to the C# Dispose
                _clientSocket.Dispose();
                _clientSocket = null;
                return(false);
            }
        }
Exemplo n.º 10
0
        private async void bnConnect_Click(object sender, RoutedEventArgs e)
        {
            ushort port = 0;

            if (UInt16.TryParse(this.txPort.Text, out port))
            {
                if (string.IsNullOrEmpty(this.txAddress.Text))
                {
                    this.txAddress.Text = this.txAddress.PlaceholderText;
                }
                Windows.Networking.HostName host = new Windows.Networking.HostName(this.txAddress.Text);
                this.connector = new Connector(true);

                if (this.connector != null)
                {
                    this.connection = await this.connector.ConnectAsync(host, port);

                    if (this.connection != null)
                    {
                        this.bnConnect.IsEnabled = false;
                        this.bnClose.IsEnabled   = true;
                        this.bnStart.IsEnabled   = true;
                        this.bnStop.IsEnabled    = false;

                        this.connection.Disconnected += Connection_Disconnected;

                        var propertySet           = new PropertySet();
                        var propertySetDictionary = propertySet as IDictionary <string, object>;
                        propertySet["Connection"] = this.connection;

                        RegisterSchemeHandler(propertySet);
                    }
                }
            }
        }
Exemplo n.º 11
0
        /// <summary>This method Creates a socket, then sends the inital SOCKS request info. It stops before reading so that other methods may differently interpret the results.It returns the open socket.
        ///<para>targetHostname The hostname of the destination host.</para>
        ///<para>targetPort The port to connect to</para>
        ///<para>req SOCKS/TOR request code</para>
        ///</summary>
        public static async Task <StreamSocket> TorSocketPreAsync(String targetHostname, int targetPort, byte req)
        {
            StreamSocket s = new StreamSocket();

            Windows.Networking.HostName proxyAddrHostName = new Windows.Networking.HostName(proxyAddr);

            await s.ConnectAsync(proxyAddrHostName, proxyPort.ToString());

            BinaryWriter _os = new BinaryWriter(s.OutputStream.AsStreamForWrite());

            _os.Write(SOCKS_VERSION);
            _os.Write(req);
            // 2 bytes
            _os.Write((short)targetPort);
            // 4 bytes, high byte first
            _os.Write(SOCKS4A_FAKEIP);
            _os.Write(SOCKS_DELIM);
            _os.Write(targetHostname);
            _os.Write(SOCKS_DELIM);

            _os.Flush();
            _os.Dispose();

            return(s);
        }
        private async void CharacteristicStreamButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                // Create a client socket and connect to the server.
                //Windows.Networking.Sockets.
                if (socket == null)
                {
                    socket = new Windows.Networking.Sockets.StreamSocket();
                }
                // Define the server name and port
                Windows.Networking.HostName serverHost = new Windows.Networking.HostName("localhost");
                string serverPort = "1337";

                // Connect to server
                await socket.ConnectAsync(serverHost, serverPort);

                // launch the HR data stream routine.
                socket.InputStream.AsStreamForRead();
                //

                // Start listening for incoming TCP connections on the specified port.
            }
            catch (Exception ex)
            {
                // This happens when the network socket failed to create
                rootPage.NotifyUser(ex.Message, NotifyType.ErrorMessage);
            }
        }
Exemplo n.º 13
0
        private async void StartClient()
        {
            try
            {
                // Create the DatagramSocket and establish a connection to the echo server.
                var clientDatagramSocket = new Windows.Networking.Sockets.DatagramSocket();

                clientDatagramSocket.MessageReceived += ClientDatagramSocket_MessageReceived;

                // The server hostname that we will be establishing a connection to. In this example, the server and client are in the same process.
                var hostName = new Windows.Networking.HostName("localhost");

                await clientDatagramSocket.BindServiceNameAsync("servername");



                // Send a request to the echo server.
                string request = "Hello, World!";
                using (var serverDatagramSocket = new Windows.Networking.Sockets.DatagramSocket())
                {
                    using (Stream outputStream = (await serverDatagramSocket.GetOutputStreamAsync(hostName, "3655")).AsStreamForWrite())
                    {
                        using (var streamWriter = new StreamWriter(outputStream))
                        {
                            //await streamWriter.WriteAsync();
                            await streamWriter.FlushAsync();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Windows.Networking.Sockets.SocketErrorStatus webErrorStatus = Windows.Networking.Sockets.SocketError.GetStatus(ex.GetBaseException().HResult);
            }
        }
Exemplo n.º 14
0
        private async void connectbutton_ClickAsync(object sender, RoutedEventArgs e)
        {
            mTimer2.Start();
            TextBox TBox = IP;

            Ip = TBox.Text;
            var settings = ApplicationData.Current.LocalSettings;

            settings.Values["IP"]     = Ip;
            serverDisposed.Visibility = Visibility.Collapsed;
            try
            {
                socket = new Windows.Networking.Sockets.StreamSocket();
                Windows.Networking.HostName serverHost = new Windows.Networking.HostName(Ip);
                string serverPort = "1337";
                await socket.ConnectAsync(serverHost, serverPort);

                Stream streamOut = socket.OutputStream.AsStreamForWrite();
                Writer = new StreamWriter(streamOut);
                VerticalPage verticalpage = frame.Content as VerticalPage;
                verticalpage.AppearImg();
                //create timer
                mTimer.Tick    += MTimer_Tick;
                mTimer.Interval = TimeSpan.FromSeconds(5);
                mTimer.Start();

                connectbutton.Visibility = Visibility.Collapsed;
                stackPanel.Visibility    = Visibility.Collapsed;
                serverIP.Visibility      = Visibility.Collapsed;
            }
            catch (Exception ex)
            {
            }
        }
Exemplo n.º 15
0
        public async override Task <bool> ConnectAsync()
        {
            try
            {
                _readBuffer = new char[MAX_BUFFER_SIZE];

                _socket = new Windows.Networking.Sockets.StreamSocket();
                var host = new Windows.Networking.HostName(_remoteDevice.IPAddress);
                await _socket.ConnectAsync(host, Constants.TCPListenPort.ToString());

                _inputStream = _socket.InputStream.AsStreamForRead();
                _reader      = new StreamReader(_inputStream);

                _outputStream = _socket.OutputStream.AsStreamForWrite();
                _writer       = new StreamWriter(_outputStream);

                ReceiveData();

                _pingTimer = new Timer(Ping, null, 0, 2500);

                InvokeConnected();

                return(true);
            }
            catch (Exception ex)
            {
                _logger.NotifyUserError("TCPIPChannel_Listen", ex.Message);
                return(false);
            }
        }
Exemplo n.º 16
0
        /// <summary>
        /// Opens an unencrypted connection to a server.
        /// </summary>
        /// <param name="IP">Hostname or IP-Address.</param>
        /// <param name="RemotePort">Target port of the remote server.</param>
        /// <param name="PColl">The Portal Collection.</param>
        /// <returns>Returns the link of the connection.</returns>
        /// <exception cref="System.Net.Sockets.SocketException">Thrown if vaser is unable to create a socket or a connection.</exception>
        public static async System.Threading.Tasks.Task <Link> ConnectClient(string IP, int RemotePort, PortalCollection PColl)
        {
            //if (Mode == VaserOptions.ModeSSL) throw new Exception("Missing X509Certificate2");
            if (PColl == null)
            {
                throw new Exception("PortalCollection is needed!");
            }

            try
            {
                //Debug.WriteLine("Connecting");
                StreamSocket client = new StreamSocket();
                Windows.Networking.HostName serverHost = new Windows.Networking.HostName(IP);
                await client.ConnectAsync(serverHost, RemotePort.ToString(), SocketProtectionLevel.PlainSocket);

                //Debug.WriteLine("Connected");
                PColl._Active = true;
                //Debug.WriteLine("Create Connection class");
                Connection con = new Connection(client, false, VaserOptions.ModeNotEncrypted, PColl, null, null, null, null);
                //Debug.WriteLine("Create Connection class DONE" );

                return(con.link);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Exemplo n.º 17
0
        async void discoverer_TvFound(Windows.Networking.HostName TvHost, UInt16 TvPort, string TvResponse)
        {
            ToggleProgressBar(false);
            SetProgressText("Found TV.");
            await AddTvUnique(TvHost, TvPort);

            await GetTvNameFrom(TvHost, TvPort, TvResponse);
        }
Exemplo n.º 18
0
        public async void Connect(Game1 g)
        {
            Socket = new StreamSocket();
            Windows.Networking.HostName hn = new Windows.Networking.HostName(ip);
            await Socket.ConnectAsync(hn, port.ToString());

            g.c = true;
            this.Listen();
        }
Exemplo n.º 19
0
        // </SnippetMakeFilterList>

        // <SnippetFindByHostName>
        private async Task <RemoteSystem> getDeviceByAddressAsync(string IPaddress)
        {
            // construct a HostName object
            Windows.Networking.HostName deviceHost = new Windows.Networking.HostName(IPaddress);

            // create a RemoteSystem object with the HostName
            RemoteSystem remotesys = await RemoteSystem.FindByHostNameAsync(deviceHost);

            return(remotesys);
        }
Exemplo n.º 20
0
        public async void Send_Message(byte[] message, Windows.Networking.HostName ip, string port)
        {
            Debug.Log("Sending");
            IOutputStream streamOut = await this.socket.GetOutputStreamAsync(ip, port);

            DataWriter dataWriter = new DataWriter(streamOut);

            dataWriter.WriteBytes(message);
            await dataWriter.StoreAsync();
        }
Exemplo n.º 21
0
        public static async Task <XDocument> SockeRequest(
            string ip,
            string port,
            string strReq
            )
        {
            XDocument doc = null;

            try
            {
                var socket     = new Windows.Networking.Sockets.StreamSocket();
                var serverHost = new Windows.Networking.HostName(ip);
                await socket.ConnectAsync(serverHost, port);

                //Send request
                DataWriter writer = new DataWriter(socket.OutputStream);

                writer.WriteUInt32(writer.MeasureString(strReq));
                writer.WriteString(strReq);
                await writer.StoreAsync();

                await writer.FlushAsync();

                writer.DetachStream();
                writer.Dispose();


                //Read response
                Stream streamIn = socket.InputStream.AsStreamForRead();
                int    bsize    = 4096;
                byte[] buffer   = new byte[bsize];
                int    readByte = await streamIn.ReadAsync(
                    buffer,
                    0,
                    bsize
                    );

                if (readByte <= 0)
                {
                    //return null if there is no response
                    return(doc);
                }
                byte[] rdata = new byte[readByte];
                Array.Copy(buffer, rdata, readByte);
                streamIn.Dispose();
                socket.Dispose();


                doc = XDocument.Parse(Encoding.ASCII.GetString(rdata));
            }
            catch (Exception ex)
            {
            }
            return(doc);
        }
Exemplo n.º 22
0
        private async Task OnSend()
        {
            if (string.IsNullOrEmpty(IPAddress))
            {
                await NotifyAsync("Destination IP is Empty");

                return;
            }
            IsBusy = true;
            var contentType = Enum.Parse <ContentType>(_selectedContentType.ToString());

            if (CoreApplication.Properties.ContainsKey("listener"))
            {
                Windows.Networking.Sockets.StreamSocket socket = null;
                try
                {
                    var host = new Windows.Networking.HostName(IPAddress);
                    socket = new Windows.Networking.Sockets.StreamSocket();
                    socket.Control.KeepAlive = false;
                    await socket.ConnectAsync(host, App.ServiceName);

                    switch (contentType)
                    {
                    case ContentType.File:
                        await SendFileAsync(socket.InputStream, socket.OutputStream);

                        break;

                    case ContentType.Code:
                        var language = Enum.Parse <HighlightedLanguage>(_language.ToString());
                        await SendContentAsync(socket.InputStream, socket.OutputStream, contentType, language);

                        break;

                    case ContentType.Text:
                        await SendContentAsync(socket.InputStream, socket.OutputStream, contentType);

                        break;
                    }
                }
                catch (Exception ex)
                {
                    await NotifyAsync(ex.Message);
                }
                finally
                {
                    socket?.Dispose();
                    IsBusy = false;
                }
            }
            else
            {
                await NotifyAsync("Somthing wrong.. Please Restart the app and try again");
            }
        }
Exemplo n.º 23
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            if (this.btnConnect.Label == "Connect")
            {
                try
                {
                    Windows.Networking.HostName serverHost = new Windows.Networking.HostName(txtIP.Text);

                    string serverPort = txtPort.Text;
                    await socket.ConnectAsync(serverHost, serverPort);

                    Stream       streamOut = socket.OutputStream.AsStreamForWrite();
                    BinaryWriter writer    = new BinaryWriter(streamOut);
                    Stream       streamIn  = socket.InputStream.AsStreamForRead();
                    BinaryReader reader    = new BinaryReader(streamIn);

                    Boolean connOn     = true;
                    int     countLimit = handshake.Length + zonelabels.Length;

                    handshake[0] = App.createLoginString(this.txtPassword.Password);
                    int[] fixedLenght = new int[] { 53 };

                    this.txtEvent.Text  = "Connecting...";
                    this.txtStatus.Text = "Status: Connecting...";
                    await comms(reader, writer, handshake, answerLenghtArray, 0);

                    this.txtEvent.Text    = "Retrieving Zone Labels...";
                    this.txtStatus.Text   = "Status: Connected";
                    this.btnConnect.Label = "Disconnect";
                    await comms(reader, writer, zonelabels, fixedLenght, 2);

                    int i = 1;
                    foreach (CheckBox item in this.gridView.Items)
                    {
                        item.Content = Mappings.zoneLabel[i];
                        i++;
                    }


                    while (connOn)
                    {
                        await comms(reader, writer, retrieveInfo, fixedLenght, 1000);
                    }
                }
                catch (Exception er)
                {
                    Debug.WriteLine("ops...");
                    Debug.WriteLine(er.Message);
                }
            }
            else
            {
                socket.Dispose();
            }
        }
Exemplo n.º 24
0
        public async Task SsdpQueryAsync(string filter = "ssdp:all", int seconds = 5, int port = 1900)
        {
            _ssdpPort     = port;
            _foundDevices = new List <string>();
            var remoteIP  = new Windows.Networking.HostName(_ssdp_ip);
            var ssdpQuery = GetSSDPQuery(seconds, port, filter);
            var reqBuff   = Encoding.UTF8.GetBytes(ssdpQuery);

            try
            {
                if (_readerSocket != null)
                {
                    _readerSocket.Dispose();
                }
            }
            catch (Exception ex)
            {
                LogException("SSDPFinder.QueryAsync - Close Existing Socket", ex);
            }

            _readerSocket = new DatagramSocket();
            _readerSocket.MessageReceived += (sender, args) =>
            {
                Task.Run(async() =>
                {
                    var addr         = args.RemoteAddress.DisplayName;
                    var result       = args.GetDataStream();
                    var resultStream = result.AsStreamForRead(1024);

                    using (var reader = new StreamReader(resultStream))
                    {
                        var resultText = await reader.ReadToEndAsync();

                        if (resultText.StartsWith("HTTP/1.1 200 OK"))
                        {
                            HandleSSDPResponse(resultText);
                        }
                    };
                });
            };

            var ipAddress = PlatformSupport.Services.Network.GetIPV4Address();
            var hostName  = new Windows.Networking.HostName(ipAddress);
            await _readerSocket.BindEndpointAsync(hostName, "");

            Core.PlatformSupport.Services.Logger.AddCustomEvent(LogLevel.Message, "SSDPFinder.QueryAsync", _readerSocket.Information.LocalAddress + " " + _readerSocket.Information.LocalPort);

            _readerSocket.JoinMulticastGroup(remoteIP);

            using (var stream = await _readerSocket.GetOutputStreamAsync(remoteIP, _ssdpPort.ToString()))
            {
                await stream.WriteAsync(reqBuff.AsBuffer());
            }
        }
Exemplo n.º 25
0
        private void Socket_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            this.senderIP   = args.RemoteAddress;
            this.senderPort = args.RemotePort;

            DataReader dataReader = args.GetDataReader();

            Byte[] buffer = new Byte[dataReader.UnconsumedBufferLength];
            dataReader.ReadBytes(buffer);

            this.messageQueue.Enqueue(buffer);
        }
Exemplo n.º 26
0
        // Purpose:     Connect to node.js application (lamechat.js)
        // End Result:  node.js app now has a socket open that can send
        //              messages back to this tcp client application
        private async void cmdConnect_Click(object sender, RoutedEventArgs e)
        {
            AddPrompt();
            Windows.Networking.HostName serverHost = new Windows.Networking.HostName("127.0.0.1");
            await tcpClient.ConnectAsync(serverHost, "8000");

            serverStream = tcpClient.OutputStream.AsStreamForWrite();

            StreamWriter writer  = new StreamWriter(serverStream);
            string       request = txtChatName.Text.Trim() + " is joining";
            await writer.WriteLineAsync(request);

            await writer.FlushAsync();

            Stream       streamIn = tcpClient.InputStream.AsStreamForRead();
            StreamReader reader   = new StreamReader(streamIn);
            string       response = await reader.ReadLineAsync();

            //byte[] outStream = Encoding.ASCII.GetBytes(txtChatName.Text.Trim()
            //                      + " is joining");
            //serverStream.Write(outStream, 0, outStream.Length);
            //serverStream.Flush();

            // upload as javascript blob
            //Task taskOpenEndpoint = Task.Factory.StartNew(() =>
            //{
            //    while (true)
            //    {
            //        // Read bytes
            //        serverStream = tcpClient.InputStream.AsStreamForRead();
            //        byte[] message = new byte[4096];
            //        int bytesRead;
            //        bytesRead = 0;

            //        try
            //        {
            //            // Read up to 4096 bytes
            //            bytesRead = serverStream.Read(message, 0, 4096);
            //        }
            //        catch
            //        {
            //            /*a socket error has occured*/
            //        }

            //        //We have rad the message.
            //        ASCIIEncoding encoder = new ASCIIEncoding();
            //        // Update main window
            //        AddMessage(encoder.GetString(message, 0, bytesRead));
            //        //Thread.Sleep(500);
            //    }
            //});
        }
Exemplo n.º 27
0
 /// <summary>
 /// Default constructor.
 /// </summary>
 /// <param name="localIP">A string containing the IP address of the local network adapter to bind sockets to. Null or empty string will use IPAddress.Any.</param>
 public SocketFactory(string localIP)
 {
     _DeviceNetworkType = DeviceNetworkType.IPv4;
     _LocalIP           = localIP;
     if (!String.IsNullOrEmpty(localIP))
     {
         var hostName = new Windows.Networking.HostName(localIP);
         if (hostName.Type == Windows.Networking.HostNameType.Ipv6)
         {
             _DeviceNetworkType = DeviceNetworkType.IPv6;
         }
     }
 }
Exemplo n.º 28
0
        /// <summary>
        /// This is the click handler for the 'ConnectSocket' button.
        /// </summary>
        /// <param name="sender">Object for which the event was generated.</param>
        /// <param name="e">Event's parameters.</param>
        private async void ConnectSocket_Click(object sender, RoutedEventArgs e)
        {
            // By default 'HostNameForConnect' is disabled and host name validation is not required. When enabling the
            // text box validating the host name is required since it was received from an untrusted source
            // (user input). The host name is validated by catching ArgumentExceptions thrown by the HostName
            // constructor for invalid input.
            Windows.Networking.HostName hostName;

            try
            {
                hostName = new Windows.Networking.HostName(HostNameForConnect.Text);
            }
            catch (ArgumentException)
            {
                return;
            }

            string[] serviceNames =
            {
                _vlcLeftLeftServiceName.Text,
                _vlcLeftFrontServiceName.Text,
                _vlcRightFrontServiceName.Text,
                _vlcRightRightServiceName.Text,
            };

            // Save the socket, so subsequent steps can use it.
            try
            {
                foreach (var serviceName in serviceNames)
                {
                    Task.Run(async() =>
                    {
                        var socket = new Windows.Networking.Sockets.StreamSocket();
                        socket.Control.KeepAlive = true;

                        await socket.ConnectAsync(hostName, serviceName);

                        OnServerConnectionEstablished(socket);
                    });
                }
            }
            catch (Exception exception)
            {
                // If this is an unknown status it means that the error is fatal and retry will likely fail.
                if (Windows.Networking.Sockets.SocketError.GetStatus(exception.HResult) ==
                    Windows.Networking.Sockets.SocketErrorStatus.Unknown)
                {
                    throw;
                }
            }
        }
        private async void StartClient()
        {
            try
            {
                // Create the StreamSocket and establish a connection to the echo server.
                using (var streamSocket = new Windows.Networking.Sockets.StreamSocket())
                {
                    // The server hostname that we will be establishing a connection to. In this example, the server and client are in the same process.
                    var hostName = new Windows.Networking.HostName("localhost");

                    this.clientListBox.Items.Add("client is trying to connect...");

                    await streamSocket.ConnectAsync(hostName, StreamSocketAndListenerPage.PortNumber);

                    this.clientListBox.Items.Add("client connected");

                    // Send a request to the echo server.
                    string request = "Hello, World!";
                    using (Stream outputStream = streamSocket.OutputStream.AsStreamForWrite())
                    {
                        using (var streamWriter = new StreamWriter(outputStream))
                        {
                            await streamWriter.WriteLineAsync(request);

                            await streamWriter.FlushAsync();
                        }
                    }

                    this.clientListBox.Items.Add(string.Format("client sent the request: \"{0}\"", request));

                    // Read data from the echo server.
                    string response;
                    using (Stream inputStream = streamSocket.InputStream.AsStreamForRead())
                    {
                        using (StreamReader streamReader = new StreamReader(inputStream))
                        {
                            response = await streamReader.ReadLineAsync();
                        }
                    }

                    this.clientListBox.Items.Add(string.Format("client received the response: \"{0}\" ", response));
                }

                this.clientListBox.Items.Add("client closed its socket");
            }
            catch (Exception ex)
            {
                Windows.Networking.Sockets.SocketErrorStatus webErrorStatus = Windows.Networking.Sockets.SocketError.GetStatus(ex.GetBaseException().HResult);
                this.clientListBox.Items.Add(webErrorStatus.ToString() != "Unknown" ? webErrorStatus.ToString() : ex.Message);
            }
        }
Exemplo n.º 30
0
        public async Task SendCommand(string command)
        {
            if ((_Host != null) && (_PortNumber != null))
            {
                ShowMessage("Connecting to " + _Host + ":" + _PortNumber);

                streamSocket = new Windows.Networking.Sockets.StreamSocket();

                try
                {
                    var hostName = new Windows.Networking.HostName(_Host);

                    await streamSocket.ConnectAsync(hostName, _PortNumber);

                    ShowMessage("Connected!");

                    using (Stream outputStream = streamSocket.OutputStream.AsStreamForWrite())
                    {
                        using (var streamWriter = new StreamWriter(outputStream))
                        {
                            await streamWriter.WriteLineAsync(command);

                            await streamWriter.FlushAsync();

                            ShowMessage("Sent!");
                        }
                    }

                    // Read data from the echo server.
                    string response;
                    using (Stream inputStream = streamSocket.InputStream.AsStreamForRead())
                    {
                        using (StreamReader streamReader = new StreamReader(inputStream))
                        {
                            if (!streamReader.EndOfStream)
                            {
                                response = await streamReader.ReadLineAsync();

                                ShowMessage(response);
                            }
                        }
                    }

                    streamSocket.Dispose();
                }
                catch (Exception E)
                {
                    ShowMessage(E.Message);
                }
            }
        }
Exemplo n.º 31
0
        /// <summary>
        /// @see http://www.johnthom.com/implementing-ssdp-search-in-windows-phone-8-using-winrt/
        /// </summary>
        public async Task DiscoverDevices()
        {
            int timeout = 3000;
            var remoteIp = "239.255.255.250";
            var remoteIpHostName = new Windows.Networking.HostName(remoteIp);
            var port = "1900";

            string query = "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: " + timeout.ToString() + "\r\n\r\n";

            var buffer = Encoding.UTF8.GetBytes(query);

            using (var socket = new DatagramSocket())
            {
                socket.MessageReceived += (sender, args) => {
                    Task.Run(() => {
                        using (var reader = args.GetDataReader())
                        {
                            byte[] respBuff = new byte[reader.UnconsumedBufferLength];
                            reader.ReadBytes(respBuff);
                            string response = Encoding.UTF8.GetString(respBuff, 0, respBuff.Length).ToLower();
                            response.Trim('\0');

                            ProcessSSDPResponse(response);
                        }
                    });
                };

                await socket.BindEndpointAsync(null, "");
                socket.JoinMulticastGroup(remoteIpHostName);
                
                using (var stream = await socket.GetOutputStreamAsync(remoteIpHostName, port))
                {
                    await stream.WriteAsync(buffer.AsBuffer());
                }
                
                // Execute within timeout
                await Task.Delay(timeout);
            }
        }
Exemplo n.º 32
0
        internal async Task<IList<Camera>> probeTask()
        { 
            var cameras = new List<Camera>();
            var cameraAddressMap = new Dictionary<string, Camera>();

            listener.MessageReceived +=  (DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args) =>
            {
                try
                {
                    var reader = args.GetDataReader();
                    var bytesRemaining = reader.UnconsumedBufferLength;
                    var receivedString = reader.ReadString(bytesRemaining);

                    var soapEnvelope = new XmlDocument();
                    soapEnvelope.LoadXml(receivedString);

                    //var probeMatches = soapEnvelope.GetElementsByTagName("wsdd:ProbeMatch");
                    var probeMatches = soapEnvelope.SelectNodesNS("//wsdd:ProbeMatch", "xmlns:wsdd='http://schemas.xmlsoap.org/ws/2005/04/discovery'");
                    foreach (var probeMatch in probeMatches)
                    {
                        Debug.WriteLine(probeMatch.GetXml());
                        var endpointAddressNode = probeMatch.SelectSingleNodeNS("wsa:EndpointReference/wsa:Address", "xmlns:wsdd='http://schemas.xmlsoap.org/ws/2005/04/discovery' xmlns:wsa='http://schemas.xmlsoap.org/ws/2004/08/addressing'");

                        var xAddressNode = probeMatch.SelectSingleNodeNS("wsdd:XAddrs", "xmlns:wsdd='http://schemas.xmlsoap.org/ws/2005/04/discovery' xmlns:wsa='http://schemas.xmlsoap.org/ws/2004/08/addressing'");

                        var cameraAddress = endpointAddressNode.InnerText;
                        var cameraUri = xAddressNode.InnerText;

                        if (!cameraAddressMap.ContainsKey(cameraAddress))
                        {
                            var uri = new Uri(cameraUri);
                            var cameraInstance = new Camera(cameraAddress, uri);
                            cameras.Add(cameraInstance);
                            cameraAddressMap.Add(cameraAddress, cameraInstance);
                        }
                    }
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.Message + "\n" + e.StackTrace);
                }
            };

            await listener.BindEndpointAsync(null, string.Empty);
            var ssdp = new Windows.Networking.HostName("239.255.255.250");
            listener.JoinMulticastGroup(ssdp);


            using (var stream = await listener.GetOutputStreamAsync(ssdp, "3702"))
            {
                using (var writer = new DataWriter(stream))
                {
                    string req = GetRequestString();

                    writer.WriteString(req);
                    await writer.StoreAsync();

                    await Task.Delay(5000);
                }
            }

            return cameras;
        }