C#TCP/IP无法正常工作
本文关键字:工作 常工作 IP C#TCP | 更新日期: 2023-09-27 17:59:24
我正在开发一个windows服务,该服务应该使用该类收集所有传入的TCP/IP流。它从服务OnStart()void开始。
然而,我遇到过这样的情况:当消息来自第二个发件人时,整个通信就会停止工作。在您重新启动之前,服务不会对单个连接做出反应。
public class TCPIP
{
public static Receiver rc = new Receiver();
public class Receiver
{
public delegate void ReceivedEventHandler(string ReceivedText, string Sender);
public event ReceivedEventHandler Received;
public void Start()
{
System.Threading.Thread th = new System.Threading.Thread(internals);
th.Start();
}
private void internals()
{
TcpListener _listener = new TcpListener(1994);
_listener.Start();
while (true)
{
TcpClient rcclient = _listener.AcceptTcpClient();
StreamReader reader = new StreamReader(rcclient.GetStream());
string msg = "";
while (reader.Peek() > -1)
{
msg += Convert.ToChar(reader.Read()).ToString();
}
Received(msg, rcclient.Client.RemoteEndPoint.ToString().Split(Convert.ToChar(":"))[0]);
// Cleanup
rcclient.Close();
reader.Close();
}
}
有人能帮我改进这个类吗?它可以回答来自多个端点的连接,并且在一个端点之后不会被占用?
事先非常感谢。
只需在接受某个连接时创建一个线程,因此如果它被阻止,将不会影响主程序。
顺便说一句,你可以尝试AcceptTcpClientSync来防止阻塞调用。