示例#1
0
        private void HandleClientComm(object client)
        {
            TcpClient     tcpClient    = (TcpClient)client;
            NetworkStream clientStream = tcpClient.GetStream();


            byte[] message = new byte[4096];
            int    bytesRead;

            while (true)
            {
                bytesRead = 0;
                IGPSTracker _tracker = null;

                try
                {
                    //blocks until a client sends a message
                    bytesRead = clientStream.Read(message, 0, 4096);
                    Utilities.writeLine("Debug 3: Time: " + DateTime.Now + " data read: " + bytesRead);
                }
                catch (Exception e)
                {
                    //a socket error has occured
                    Utilities.writeLine("Error 1: " + e.Message);
                    Utilities.writeLine("Error 2: " + e.StackTrace);
                    break;
                }

                if (bytesRead == 0)
                {
                    Utilities.writeLine("Dubug 4: Sorry, no data read, disconnecting");
                    //the client has disconnected from the server
                    break;
                }

                //message has successfully been received
                ASCIIEncoding encoder = new ASCIIEncoding();
                Utilities.writeLine("Debug 5: " + encoder.GetString(message, 0, bytesRead));

                try
                {
                    if (_tracker == null)
                    {
                        _tracker = Management.GetGPSTracker(message, bytesRead, client);
                    }
                    _tracker.RecievedMessage(message, bytesRead);
                    _tracker.SendMessages(tcpClient);
                }
                catch (Exception e)
                {
                    Utilities.writeLine("Error 3: " + e.Message);
                    Utilities.writeLine("Error 4: " + e.StackTrace);
                    Utilities.writeLine("Error data: " + encoder.GetString(message, 0, bytesRead));
                }
            }

            Utilities.writeLine("Debug 100: Closing TCP Client");
            tcpClient.Close();
        }
示例#2
0
        private void HandleClientComm(object client)
        {
            TcpClient     tcpClient    = (TcpClient)client;
            NetworkStream clientStream = tcpClient.GetStream();


            byte[] message = new byte[4096];
            int    bytesRead;

            while (true)
            {
                bytesRead = 0;
                IGPSTracker _tracker = null;

                try
                {
                    //blocks until a client sends a message
                    bytesRead = clientStream.Read(message, 0, 4096);
                    System.Diagnostics.Debug.WriteLine("Time: " + DateTime.Now + " data read: " + bytesRead);
                }
                catch (Exception e)
                {
                    //a socket error has occured
                    System.Diagnostics.Debug.WriteLine(e.Message);
                    System.Diagnostics.Debug.WriteLine(e.StackTrace);

                    break;
                }

                if (bytesRead == 0)
                {
                    System.Diagnostics.Debug.WriteLine("Sorry, no data read, disconnecting");
                    //the client has disconnected from the server
                    break;
                }

                //message has successfully been received
                ASCIIEncoding encoder = new ASCIIEncoding();
                System.Diagnostics.Debug.WriteLine(encoder.GetString(message, 0, bytesRead));

                try
                {
                    if (_tracker == null)
                    {
                        _tracker = Management.GetGPSTracker(message, bytesRead, client);
                    }
                    _tracker.RecievedMessage(message, bytesRead);
                }
                catch (Exception e)
                {
                    System.Diagnostics.Debug.WriteLine(e.Message);
                    System.Diagnostics.Debug.WriteLine(e.StackTrace);

                    eventLog1.WriteEntry("MyGPS Error processing received message. :" + e.Message, EventLogEntryType.Error);
                }
            }

            tcpClient.Close();
        }
示例#3
0
        private void HandleClientComm(object udpMessage)
        {
            // this is for testing TODO - we need to change this to work with sending back data as udp
            // only done to test UDP reciving
            TcpClient client = new TcpClient();


            byte[] bytes = (byte[])udpMessage;

            IGPSTracker _tracker = null;

            if (bytes.Length == 0)
            {
                Utilities.writeLine("Dubug 4: Sorry, no data read, disconnecting");
                //the client has disconnected from the server
            }
            else
            {
                //message has successfully been received
                ASCIIEncoding encoder = new ASCIIEncoding();
                Utilities.writeLine("Debug 5: " + encoder.GetString(bytes, 0, bytes.Length));

                try
                {
                    if (_tracker == null)
                    {
                        _tracker = Management.GetGPSTracker(bytes, bytes.Length, client);
                    }
                    _tracker.RecievedMessage(bytes, bytes.Length);
                }
                catch (Exception e)
                {
                    Utilities.writeLine("Error 3: " + e.Message);
                    Utilities.writeLine("Error 4: " + e.StackTrace);
                    Utilities.writeLine("Error data: " + encoder.GetString(bytes, 0, bytes.Length));
                }
            }
        }