![]() |
1
1
只需快速查看代码,我怀疑您可能会停止异步读取,因为s.available返回0,我引用以下代码
若要确认,请将上述内容更改为以下内容
这不是代码的完整更正,但它将确认这是否是问题所在。您需要确保正确关闭插座等。 更新 我还注意到您正在将套接字作为调用BeginSend的状态发送。
但是,您的回拨
这将提高
|
![]() |
2
1
完全随机猜测: http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit.aspx
|
![]() |
3
0
您还应该注意,您的代码中存在竞争条件。在run()中,您等待 全部完成 再次调用BeginAccept之前:
这很好,但是在AcceptConn回调中,事件设置在方法的顶部:
回调将由池中的随机线程执行,但AllDone将在实际执行任何操作之前设置。在acceptcon中的工作实际完成之前,run()循环完全可以在第一个线程中再次运行。这会给你带来大麻烦。 在执行初始化之后(尤其是在访问任何非线程安全类成员之后),应该设置alldone,如下所示:
|
![]() |
fourthking · GameSparks手动配对 7 年前 |
![]() |
0x1337 · 如何知道StreamReader何时准备就绪? 7 年前 |
![]() |
Kavin-K · 如何构建一个简单的多设备聊天应用程序?[已关闭] 7 年前 |
![]() |
Blazing Forrest · 在JAVA中查找WIFI状态 7 年前 |
![]() |
Marco · 如何计算R中igraph对象中给定类的顶点数? 7 年前 |
![]() |
John Conrad Geenty · 读取BPF程序集 7 年前 |