1

我对 C# 和 Sockets 相当陌生,但是我正在尝试制作一种“聊天”程序。我目前遇到的问题是让客户端能够自动接收来自服务器的消息(如果可用)。

到目前为止我已经尝试过:

System.Threading.Thread myThread = new System.Threading.Thread(new
    System.Threading.ThreadStart(listenThread));


public static void listenThread()
{
    while(true){
        Form1 form1 = new Form1();
        form1.ReceiveLoop();
    }

}

private void ReceiveLoop()
{
    clientSocket.ReceiveTimeout = 100;
    byte[] receivedBuffer = new byte[1024];
    try
    {
        int rec = clientSocket.Receive(receivedBuffer);
        byte[] data = new byte[rec];
        Array.Copy(receivedBuffer, data, rec);
        updateClient("Received: " + Encoding.ASCII.GetString(data));
    }
    catch (SocketException e)
    {
        //MessageBox.Show(e.ToString());
    }
}

当我从 GUI 线程访问时,ReceiveLoop() 可以工作,但是当通过 myThread 访问时它不会工作(抛出 SocketException,由于超时)。

对于我可以解决此问题的另一种方式的任何帮助或建议将不胜感激:D

4

0 回答 0