Windows 7中的TcpListener.AcceptSocketAsync问题

问题描述

我有旧的.NET代码,该代码使用TcpListener并需要在Windows 7和Windows 10 PC上运行。 最初,它使用一个单独的线程,其中使用了对TcpListener.AcceptSocket的阻塞调用。在应用程序退出时,调用Thread.Abort()杀死该线程。在Win 7和Win 10上,所有传入连接都可以正常工作,但是Abort会引起一些问题。这是退出的一种粗糙方法,无论如何都不建议。

我将其更改为使用Tasks + TcpListener.AcceptSocketAsync。它是一种更优雅的解决方案,并修复了由Thread.Abort()引起的退出问题。在Win 10上可以完美运行,但在Win 7上客户端连接无法通过。注意,同步方法适用于同一台Win 7 PC。我可以通过来回滚动代码在几分钟内对其进行测试。

这是异步网络代码的一部分:

            var listener = new TcpListener(IPAddress.Loopback,port)
            {
                ExclusiveAddressUse = false
            };
            listener.Server.SetSocketoption(SocketoptionLevel.socket,SocketoptionName.ReuseAddress,1);
            listener.Start();
            while(!stop)
            {
                Socket  sck;
                
                try
                {
                    sck = await listener.AcceptSocketAsync();
                }
                catch...
// process exceptions,exit conditions,read data
            }

有人知道Win 7上TcpListener.AcceptSocketAsync的特定问题吗?

使用.NET Framework 4.7.2和Windows 7 x64。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)