最近在写异步TCP程序,在调试时遇到了Client关闭后程序在接收回调里死循环,用client.Connected 检测好像也没用,在网上找到几篇用Socekt检测的文章,都还可以达到Client强行关闭后程序在退出死循环的功能。
本人这个是在原有的程序上加了一个小小的判断条件就实现了,相比起来也是比较简单的,其主要代码如下:
private void AcceptConnect()
{
IPAddress[] ip = Dns.GetHostAddresses(Dns.GetHostName());
listener = new TcpListener(ip[0], 60000);
listener.Start();
while (isExit ==false)
{
try
{
allDone.Reset();
AsyncCallback callback = n

本文介绍了如何在C#中处理TcpListener客户端关闭后导致的程序死循环问题。通过在读取回调函数中添加一个条件判断,即检查接收到的数据长度是否为0,来判断客户端是否已关闭连接,从而避免无限循环。示例代码展示了如何在AcceptTcpClientCallback和ReadCallback方法中实现这一功能。

343

被折叠的 条评论
为什么被折叠?



