Example #1
0
 private void ShowForm(object message)
 {
     using(MessageForm MessageForm = new MessageForm(message as NSAServer.Message)) Application.Run(MessageForm);
 }
Example #2
0
        /// <summary>
        /// Вызывается при приеме сообщения на сокет (?)
        /// </summary>
        /// <param name="state"></param>
        private void DataReadCallback(IAsyncResult state)
        {
            ConnectionInfo connection = (ConnectionInfo) state.AsyncState;
            if (connection.inputString == null) connection.inputString = new StringBuilder();

            try
            {
                int bytesRead = connection.Socket.EndReceive(state);
                if (bytesRead > 0)
                {
                    connection.inputString.Append(Encoding.UTF8.GetString(connection.Buffer));
                    connection.Buffer = new byte[ConnectionInfo.BufferSize];
                    string content = connection.inputString.ToString().Trim();
                    if (content.IndexOf("<EOF>") > -1)
                    {
                        string content_strip = content.Remove(content.IndexOf("<EOF>"));
                        byte[] bytes = Convert.FromBase64String(content_strip);

                        MemoryStream deserializationStream = new MemoryStream(bytes);
                        deserializationStream.Position = 0;
                        BinaryFormatter binaryFormatter = new BinaryFormatter();
                        NSAServer.Message message = (NSAServer.Message)binaryFormatter.Deserialize(deserializationStream);

                        byte[] answer = Encoding.UTF8.GetBytes("принято");

                        MessageForm frm = new MessageForm(message);

                        Thread MessageShowThread = new Thread(new ParameterizedThreadStart(ShowForm));
                        MessageShowThread.Start(message);
                        MessageBox.Show(String.Format("Текст : {0}. Уровень : {1}",message.Text, message.Level));
                        connection.Socket.BeginSend(answer, 0, answer.Length, 0, DataSendCallback, connection);
                    }

                    else
                    {
                        connection.Socket.BeginReceive(connection.Buffer, 0, connection.Buffer.Length, 0,
                                                       DataReadCallback, connection);
                    }
                }
            }
            catch (SocketException e)
            {
                CloseConnection(connection);
                MessageBox.Show(String.Format("Socket exception : {0}", e.SocketErrorCode));
            }

            catch (Exception e)
            {
                CloseConnection(connection);
                MessageBox.Show(String.Format("exception : {0}", e.Message));
            }
        }