热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SocketAsyncEventArgs类的服务器为啥停止服务无效,还能收到客户端数据

SocketAsyncEventArgs类作为服务端启动监听正常,但手动停止监听后,客户端发送的数据,服务端还能收到,好像没停掉,这是为什么?代码就是MSDN官方示例。http:msdn
SocketAsyncEventArgs类作为服务端启动监听正常,但手动停止监听后,客户端发送的数据,服务端还能收到,好像没停掉,这是为什么?
代码就是MSDN官方示例。
http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketasynceventargs(v=vs.90)
示例的关闭是这个方法:private void CloseClientSocket(SocketAsyncEventArgs e)
我增加了一个 停止服务器监听的方法,用来直接从服务端界面停止监听服务:public void Stop(),就是这个方法停止无效。

public void Stop()
{
    m_bufferManager = null;
    m_readWritePool.Clear();
    listenSocket.Close();
}

3 个解决方案

#1



mythread.Interrupt();  
mythread.Abort();  
GC.Collect();  

http://blog.csdn.net/fengyarongaa/article/details/6631953

#2


谢谢,看了,不过你用的线程,我参考的是MSDN上 SocketAsyncEventArgs类的示例,还不太一样。

#3


我觉得要注意一下你停止线程的时候 是不是是从主线程操作的,另外你确定你停止的是侦听的socket,还有一个传入(acceptsocket)的socket

推荐阅读
author-avatar
白斌童鞋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有