Esempio n. 1
0
        public bool Connect(IPAddress ipAddress, int port)
        {
            RemoteHostIpAddress = ipAddress;
            Port = port;

            _initialized = true;

            try
            {
                _client = new TcpClient();
                _client.Connect(RemoteHostIpAddress, Port);

                NetworkStream networkStream = _client.GetStream();

                byte[] buffer = Commands.Hello.ToFlowProtocolAsciiEncodedBytesArray();


                if (networkStream.CanWrite)
                {
                    networkStream.Write(buffer, FromBeginning, buffer.Length);
                    networkStream.Flush();
                }

                string response = string.Empty;

                if (networkStream.CanRead)
                {
                    buffer = new byte[EthernetTcpUdpPacketSize];
                    int bytesRead = networkStream.Read(buffer, FromBeginning, EthernetTcpUdpPacketSize);
                    response = buffer.Take(bytesRead).ToArray().ToFlowProtocolAsciiDecodedString();
                }

                var responseComponents = _parser.ParseResponse(response);

                if (responseComponents.TryGetValue(Cmd, out string cmd))
                {
                    if (cmd.Equals(Commands.Hello))
                    {
                        return(true);
                    }
                }
            }
            catch (Exception exception)
            {
                Debug.WriteLine(exception);
                _initialized = false;
                throw new Exception("No connection to server");
            }
            finally
            {
                _client.Close();
            }
            return(false);
        }
Esempio n. 2
0
        public bool Connect(IPAddress ipAddress, int port)
        {
            RemoteHostIpAddress = ipAddress;
            Port = port;

            _initialized = true;

            _client = new UdpClient();

            try
            {
                var serverEndPoint = new IPEndPoint(RemoteHostIpAddress, Port);
                _client.Connect(serverEndPoint);

                byte[] buffer = Commands.Hello.ToFlowProtocolAsciiEncodedBytesArray();

                _client.Send(buffer, buffer.Length);
                buffer = _client.Receive(ref serverEndPoint);

                string response = string.Empty;

                if (buffer.Length > 0)
                {
                    response = buffer.ToFlowProtocolAsciiDecodedString();
                }

                var responseComponents = _parser.ParseResponse(response);

                if (responseComponents.TryGetValue(Cmd, out string cmd))
                {
                    if (cmd.Equals(Commands.Hello))
                    {
                        return(true);
                    }
                }
            }
            catch (Exception exception)
            {
                Debug.WriteLine(exception);
                _initialized = false;
                throw new Exception("No connection to server");
            }
            finally
            {
                _client.Close();
            }
            return(false);
        }