コード例 #1
0
ファイル: OTCPServer.cs プロジェクト: karusb/ObjectTCP
        public void HandleClient(object obj)
        {
            TcpClient client = (TcpClient)obj;

            client.ReceiveBufferSize = int.MaxValue;
            client.SendBufferSize    = int.MaxValue;
            while (client.Connected)
            {
                while (client.Available <= 0)
                {
                    ;
                }
                //byte[] data = Encoding.ASCII.GetBytes("Send next data: [enter 'quit' to terminate] ");
                //client.GetStream().Write(data, 0, data.Length);
                OTcpServerMessage receivedMessage = Receive(ref client);
                if (receivedMessage != null)
                {
                    Guid   commandId     = new Guid();
                    string commandString = Commands.GetCommandFromHash(receivedMessage.Header.CommandHash);

                    commandQueue.Add(commandId, client);
                    issuedCommands.Add(commandId, new Tuple <string, object>(commandString, receivedMessage.Message));
                    CommandEvent?.Invoke(commandId, commandString);
                }
            }
        }
コード例 #2
0
ファイル: OTCPClient.cs プロジェクト: karusb/ObjectTCP
        private OTcpServerMessage ReceiveBinary(ref TcpClient client)
        {
            var header          = ReceiveHeader(ref client);
            var receivedMessage = new OTcpServerMessage();

            if (header == null)
            {
                // LOG
                return(null);
            }

            receivedMessage.Header = header;
            byte[] messageBytes = new byte[header.DataSize]; // Clear the message
            // Receive the stream of bytes
            client.GetStream().Read(messageBytes, 0, messageBytes.Length);
            receivedMessage.Message = ObjectBinarySerialization.ByteArrayToObject(messageBytes);
            return(receivedMessage);
        }
コード例 #3
0
ファイル: OTCPClient.cs プロジェクト: karusb/ObjectTCP
        private OTcpServerMessage ReceiveJSON(ref TcpClient client)
        {
            var header          = ReceiveHeader(ref client);
            var dtype           = StringTypeToTypeConverter.Convert(header.ExpectType);
            var receivedMessage = new OTcpServerMessage();

            if (header == null)
            {
                // LOG
                return(null);
            }
            receivedMessage.Header = header;
            byte[] messageBytes = new byte[header.DataSize]; // Clear the message
            // Receive the stream of bytes
            client.GetStream().Read(messageBytes, 0, messageBytes.Length);

            var convertedType = StringTypeToTypeConverter.GetTypeFrom(header.ExpectType);

            receivedMessage.Message = Convert.ChangeType(JsonConvert.DeserializeObject(Encoding.UTF8.GetString(messageBytes), convertedType), convertedType);
            return(receivedMessage);
        }