예제 #1
0
    private string ProcessServerMessage(TCPTestServer.ServerMessage message)
    {
        string data = message.Data;

        if (message.Data.StartsWith("!"))
        {
            string[] split = data.Split(' ');
            switch (split[0])
            {
            case "!ping":
                double sentTimeStamp  = double.Parse(split[1]);
                double recTimeStamp   = double.Parse(split[2]);
                double nowTimeStamp   = (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds;
                double toServerTime   = recTimeStamp - sentTimeStamp;
                double fromServerTime = nowTimeStamp - recTimeStamp;
                double totalTime      = nowTimeStamp - sentTimeStamp;
                data = string.Format("!ping To Server: ({2}ms) {0}ms From Server: {1}",
                                     toServerTime.ToString("F2"),
                                     fromServerTime.ToString("F2"),
                                     totalTime.ToString("F2"));
                break;
            }
        }

        return(string.Format("{0}: {1}", message.SenderData.Name, data));
    }
예제 #2
0
    private void OnClientReceivedMessage(TCPTestServer.ServerMessage message)
    {
        string finalMessage = ProcessServerMessage(message);

        lock (cacheLock)
        {
            if (string.IsNullOrEmpty(cache))
            {
                cache = string.Format("<color=green>{0}</color>\n", finalMessage);
            }
            else
            {
                cache += string.Format("<color=green>{0}</color>\n", finalMessage);
            }
        }
    }
예제 #3
0
    private void ListenForData()
    {
        try
        {
            socketConnection = new TcpClient(IPAddress, Port);
            OnConnected(this);
            OnLog("Connected");

            Byte[] bytes = new Byte[1024];
            running = true;
            while (running)
            {
                // Get a stream object for reading
                using (stream = socketConnection.GetStream())
                {
                    int length;
                    // Read incoming stream into byte array.
                    while (running && stream.CanRead)
                    {
                        length = stream.Read(bytes, 0, bytes.Length);
                        if (length != 0)
                        {
                            var incomingData = new byte[length];
                            Array.Copy(bytes, 0, incomingData, 0, length);
                            // Convert byte array to string message.
                            string serverJson = Encoding.ASCII.GetString(incomingData);
                            TCPTestServer.ServerMessage serverMessage = JsonUtility.FromJson <TCPTestServer.ServerMessage>(serverJson);
                            MessageReceived(serverMessage);
                        }
                    }
                }
            }
            socketConnection.Close();
            OnLog("Disconnected from server");
            OnDisconnected(this);
        }
        catch (SocketException socketException)
        {
            OnLog("Socket exception: " + socketException);
        }
    }
예제 #4
0
 public void MessageReceived(TCPTestServer.ServerMessage serverMessage)
 {
     OnMessageReceived(serverMessage);
 }