Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2011, 17:43   #1
Kongor
Новичок
Джуниор
 
Регистрация: 14.04.2011
Сообщений: 1
По умолчанию Чтение потока на поиск

Доброго времени суток , есть поток который надо постоянно читать и вылавливать команду в виде слова на которое будет действие messegebox.show, за пример буду безмерно благодарен. Ниже листинг собственно куда мне нужно это воткнуть.

Код:
namespace ChatClient
{
    public partial class Form1 : Form
    {

        private string UserName = "Unknown";
        private StreamWriter swSender;
        private StreamReader srReceiver;
        private TcpClient tcpServer;

        private delegate void UpdateLogCallback(string strMessage);

        private delegate void CloseConnectionCallback(string strReason);
        private Thread thrMessaging;
        private IPAddress ipAddr;
        private bool Connected;

        public Form1()
        {

            Application.ApplicationExit += new EventHandler(OnApplicationExit);
            InitializeComponent();
        }


        public void OnApplicationExit(object sender, EventArgs e)
        {
            if (Connected == true)
            {

                Connected = false;
                swSender.Close();
                srReceiver.Close();
                tcpServer.Close();
            }
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {

            if (Connected == false)
            {

                InitializeConnection();
            }
            else
            {
                CloseConnection("Disconnected at user's request.");
            }
        }

        private void InitializeConnection()
        {

            ipAddr = IPAddress.Parse(txtIp.Text);

            tcpServer = new TcpClient();
            tcpServer.Connect(ipAddr, 1986);


            Connected = true;

            UserName = txtUser.Text;


            txtIp.Enabled = false;
            txtUser.Enabled = false;
            txtMessage.Enabled = true;
            btnSend.Enabled = true;
            btnConnect.Text = "Disconnect";


            swSender = new StreamWriter(tcpServer.GetStream());
            swSender.WriteLine(txtUser.Text);
            swSender.Flush();


            thrMessaging = new Thread(new ThreadStart(ReceiveMessages));
            thrMessaging.Start();
        }

        private void ReceiveMessages()
        {

            srReceiver = new StreamReader(tcpServer.GetStream());

            string ConResponse = srReceiver.ReadLine();

            if (ConResponse[0] == '1')
            {

                this.Invoke(new UpdateLogCallback(this.UpdateLog), new object[] { "Connected Successfully!" });
            }
            else 
            {
                string Reason = "Not Connected: ";

                Reason += ConResponse.Substring(2, ConResponse.Length - 2);

                this.Invoke(new CloseConnectionCallback(this.CloseConnection), new object[] { Reason });

                return;
            }

            while (Connected)
            {

                this.Invoke(new UpdateLogCallback(this.UpdateLog), new object[] { srReceiver.ReadLine() });
            }
        }


        private void UpdateLog(string strMessage)
        {

            txtLog.AppendText(strMessage + "\r\n");
        }


        private void CloseConnection(string Reason)
        {

            txtLog.AppendText(Reason + "\r\n");

            txtIp.Enabled = true;
            txtUser.Enabled = true;
            txtMessage.Enabled = false;
            btnSend.Enabled = false;
            btnConnect.Text = "Connect";


            Connected = false;
            swSender.Close();
            srReceiver.Close();
            tcpServer.Close();
        }

        // Sends the message typed in to the server
        private void SendMessage()
        {
            if (txtMessage.Lines.Length >= 1)
            {
                swSender.WriteLine(txtMessage.Text);
                swSender.Flush();
                txtMessage.Lines = null;
            }
            txtMessage.Text = "";
        }

        // We want to send the message when the Send button is clicked
        private void btnSend_Click(object sender, EventArgs e)
        {
            SendMessage();
        }

        // But we also want to send the message once Enter is pressed
        private void txtMessage_KeyPress(object sender, KeyPressEventArgs e)
        {
            // If the key is Enter
            if (e.KeyChar == (char)13)
            {
                SendMessage();
            }
        }
    }
}
Kongor вне форума Ответить с цитированием
Старый 15.04.2011, 15:18   #2
jumper46
 
Регистрация: 15.04.2011
Сообщений: 3
По умолчанию

Привет, насколько я понимаю у тебя в листинге ответ на твой вопрос, просто в UpdateLog(string strMessage) нужно добавить
if(strMessage.Equals("Тут сообщение которое нужно показать")
{
MessageBox.Show(strMessage);
}
jumper46 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать номер потока из самого потока? GaMeSTeR Помощь студентам 0 03.12.2010 09:50
Чтение/Поиск в txt файле и вывод в ComboBox limnique Общие вопросы C/C++ 2 05.09.2008 23:01
Поиск и чтение... Decibel Общие вопросы Delphi 12 17.06.2008 23:08