我对 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