客户端服务器通信 [英] client server communication

查看:75
本文介绍了客户端服务器通信的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




如何使客户端异步接收来自服务器的命令?
服务器正在监视多个客户端,

客户端代码:仅当在客户端中单击按钮时此方法有效,但我希望此方法自动起作用.我应该将此代码放在客户端的什么地方?





how to make the client to receive commands from a server asynchronously?
server is monitoring several clients,

client side code: this works only when a button is clicked in client but i want this to work automatically. where should i put this code in client side?


private void button1_Click(object sender, EventArgs e)
        {
            try
            {

                byte[] buffer = new byte[1024];
                int iRx = m_socClient.Receive(buffer);
                char[] chars = new char[iRx];

                System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();
                int charLen = d.GetChars(buffer, 0, iRx, chars, 0);
                System.String szData = new System.String(chars);
                txtDataRx.Text = szData;

                if (szData == "info")
                {
                    string[] lines1 = System.IO.File.ReadAllLines(@"D:\test55.txt");
                    // string replyMsg = "client Reply: INFO command " ;
                    // Convert the reply to byte array
                    foreach (string line in lines1)
                    {

                        byte[] byData = System.Text.Encoding.ASCII.GetBytes(line);

                        Socket workerSocket = (Socket)m_socClient;
                        workerSocket.Send(byData);
                    }

                }
                if (szData == "stop")
                {
                    string replyMsg = "client Reply: STOP command ";
                    // Convert the reply to byte array
                    byte[] byData = System.Text.Encoding.ASCII.GetBytes(replyMsg);

                    Socket workerSocket = (Socket)m_socClient;
                    workerSocket.Send(byData);
                }
             /*   if (szData == "file")
                {
                    string replyMsg = "client Reply: FILE command ";
                    // Convert the reply to byte array
                    byte[] byData = System.Text.Encoding.ASCII.GetBytes(replyMsg);

                    Socket workerSocket = (Socket)m_socClient;
                    workerSocket.Send(byData);
                }
*/            }
            catch (SocketException se)
            {
                MessageBox.Show(se.Message);
            }
            

        }



问候,
Amith



Regards,
Amith

推荐答案

如果要异步执行某项操作,可以将其放入自己的线程中:
If you want to do something asynchronously, you can put it into an own thread:
Thread myThread = new Thread(ListeningToServer);
myThread.IsBackground = true;
myThread.Start();

...

private void ListeningToServer()
{
  while (true)
  {
    //Put your code here
  }
}


这篇关于客户端服务器通信的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆