示例#1
0
        public virtual async Task <ReceiveMessage> GetMessage()
        {
            var networkStream = Client.GetStream();

            // Message Type
            ReceiveMessageType messageType = ReceiveMessageType.None;
            var messageTypeBuffer          = new byte[4];
            var messageTypeBufferBytesRead = 0;

            while (messageTypeBufferBytesRead < 4)
            {
                var bytesRead = await networkStream.ReadAsync(messageTypeBuffer, messageTypeBufferBytesRead, 4 - messageTypeBufferBytesRead);

                if (bytesRead == 0)
                {
                    return(null);
                }

                messageTypeBufferBytesRead += bytesRead;
            }

            messageType = (ReceiveMessageType)BitConverter.ToInt32(messageTypeBuffer, 0);

            // Message Size
            int messageSize                = 0;
            var messageSizeBuffer          = new byte[4];
            var messageSizeBufferBytesRead = 0;

            while (messageSizeBufferBytesRead < 4)
            {
                var bytesRead = await networkStream.ReadAsync(messageSizeBuffer, messageSizeBufferBytesRead, 4 - messageSizeBufferBytesRead);

                if (bytesRead == 0)
                {
                    return(null);
                }

                messageSizeBufferBytesRead += bytesRead;
            }

            messageSize = BitConverter.ToInt32(messageSizeBuffer, 0);

            // Message Data
            var messageData          = new byte[messageSize];
            var messageDataBytesRead = 0;

            while (messageDataBytesRead < messageSize && messageSize > 0)
            {
                var bytesRead = await networkStream.ReadAsync(messageData, messageDataBytesRead, messageSize - messageDataBytesRead);

                if (bytesRead == 0)
                {
                    return(null);
                }

                messageDataBytesRead += bytesRead;
            }

            return(BuildMessage(messageType, messageSize, messageData));
        }
示例#2
0
 public ChunkCompletedMessage(ReceiveMessageType messageType, int messageSize, byte[] messageData)
     : base(messageType, messageSize, messageData)
 {
     SceneId   = BitConverter.ToInt32(messageData, 0);
     ChunkId   = BitConverter.ToInt32(messageData, 4);
     ColorData = messageData.Skip(8).ToArray();
 }
示例#3
0
        protected virtual ReceiveMessage BuildMessage(ReceiveMessageType messageType, int messageSize, byte[] messageData)
        {
            switch (messageType)
            {
            case ReceiveMessageType.ChunkRequested:
                return(new ChunkRequestedMessage(messageType, messageSize, messageData));

            case ReceiveMessageType.ChunkCompleted:
                return(new ChunkCompletedMessage(messageType, messageSize, messageData));

            default:
                return(null);
            }
        }
示例#4
0
        private void button3_Click(object sender, EventArgs e)
        {
            worker.RunWorkerAsync();
            XmlDocument xml = new XmlDocument();

            xml.Load("C:\\Users\\barab\\Desktop\\1.xml");


            ReceiveMessageType Message = new ReceiveMessageType
            {
                MessageType = MessageType.UploadTest,
                Data        = new Up_Test()
                {
                    xml = xml.ToString()
                }
            };
            IPHostEntry ipHost     = Dns.GetHostEntry("localhost");
            IPAddress   ipAddr     = ipHost.AddressList[1];
            IPEndPoint  ipEndPoint = new IPEndPoint(ipAddr, 20000);

            srSocket.Connect(ipEndPoint);
            byte[] data = Serialization.ToByteArray(Message);
            srSocket.Send(data);

            data = new byte[2048];
            do
            {
                srSocket.Receive(data, data.Length, 0);
            }while (srSocket.Available > 0);

            srSocket.Shutdown(SocketShutdown.Both);
            srSocket.Close();

            ReceiveMessageType receiveMessageType = Serialization.FromByteArray <ReceiveMessageType>(data);

            if (receiveMessageType.MessageType == MessageType.Error)
            {
                MessageBox.Show($"ok");
            }
        }
示例#5
0
        private void button1_Click(object sender, EventArgs e)
        {
            XmlReader          reader  = null;
            ReceiveMessageType Message = new ReceiveMessageType
            {
                MessageType = MessageType.GetTest,
                Data        = new Get_Test
                {
                    Id  = 1,
                    xml = reader
                }
            };
            IPHostEntry ipHost     = Dns.GetHostEntry("localhost");
            IPAddress   ipAddr     = ipHost.AddressList[1];
            IPEndPoint  ipEndPoint = new IPEndPoint(ipAddr, 20000);

            srSocket.Connect(ipEndPoint);
            byte[] data = Serialization.ToByteArray(Message);
            srSocket.Send(data);

            data = new byte[2048];
            do
            {
                srSocket.Receive(data, data.Length, 0);
            }while (srSocket.Available > 0);

            srSocket.Shutdown(SocketShutdown.Both);
            srSocket.Close();

            ReceiveMessageType receiveMessageType = Serialization.FromByteArray <ReceiveMessageType>(data);

            if (receiveMessageType.MessageType == MessageType.GetTest)
            {
                MessageBox.Show("ok");
            }
        }
示例#6
0
 public ChunkRequestedMessage(ReceiveMessageType messageType, int messageSize, byte[] messageData)
     : base(messageType, messageSize, messageData)
 {
 }
示例#7
0
 public ReceiveMessage(ReceiveMessageType messageType, int messageSize, byte[] messageData)
 {
     MessageType = messageType;
     MessageSize = messageSize;
     MessageData = messageData;
 }
示例#8
0
        private void button1_Click(object sender, EventArgs e)
        {
            string loginUser = loginField.Text.ToString();
            string passUser  = passField.Text.ToString();


            ReceiveMessageType Message = new ReceiveMessageType
            {
                MessageType = MessageType.Login,
                Data        = new Logins()
                {
                    Login    = loginUser,
                    Password = passUser
                }
            };
            IPHostEntry ipHost     = Dns.GetHostEntry("localhost");
            IPAddress   ipAddr     = ipHost.AddressList[1];
            IPEndPoint  ipEndPoint = new IPEndPoint(ipAddr, 20000);

            srSocket.Connect(ipEndPoint);
            byte[] data = Serialization.ToByteArray(Message);
            srSocket.Send(data);

            data = new byte[2048];
            do
            {
                srSocket.Receive(data, data.Length, 0);
            }while (srSocket.Available > 0);

            srSocket.Shutdown(SocketShutdown.Both);
            srSocket.Close();

            ReceiveMessageType receiveMessageType = Serialization.FromByteArray <ReceiveMessageType>(data);

            if (receiveMessageType.MessageType == MessageType.GetTeacher || receiveMessageType.MessageType == MessageType.GetStudent)
            {
                Student student = (Student)receiveMessageType.Data;
                MessageBox.Show("ok");
                MessageBox.Show($"'{student.Second_Name}'");
            }


            //DB db = new DB();

            //DataTable table = new DataTable();
            //table.Locale = System.Globalization.CultureInfo.InvariantCulture;
            //SqlDataAdapter adapter = new SqlDataAdapter();

            //SqlCommand command = new SqlCommand("SELECT * FROM UserInfoTable WHERE login = @uL AND pass = @uP", db.getConnection());
            //command.Parameters.Add("@uL", SqlDbType.VarChar).Value = loginUser;
            //command.Parameters.Add("@uP", SqlDbType.VarChar).Value = passUser;
            //adapter.SelectCommand = command;
            //adapter.Fill(table);

            //if (table.Rows.Count > 0)
            //{
            //    this.Hide();
            //    questionForm qf = new questionForm();
            //    qf.Show();
            //}


            else
            {
                MessageBox.Show("No");
            }
        }