收录日期:2020/12/02 23:22:11 时间:2016/07/06 09:03:15 标签:C#
程序的需求是这样的:
服务端S和两种类型的客户端CA、CB,CA与CB属于一对一的关系。CA与S连接后,就保持连接;CB与S连接时检查CA连接状态,CA处在连接中则成功连接,由S计时,时间到S主动断开CB连接。在连接中,服务器接收CB的消息并处理,一系列处理动作中可能会做出向CA,CB发送消息的动作;另外,S不断地向CA发送消息。

我用异步接收方法实现通信,发送还是采用同步发送。

现在系统的运行状态是:
单机状态:服务端长时间正常运行;
多机状态:服务端前期(CB前十几次连接)正常运行,有一段时间后会存在某客户端不能正常提供服务,调试状态发现NetworkStream.Write阻塞,我在这里捕捉了异常弹出窗口,到一定程度会突然弹出无数个窗口,提示Cannot access a disposed object.Object name:system.sockets.networkstream.另外,出现这种状况之前服务端的线程数会不断地增加。

哪位能给我指点一下?
自己顶上,只有这些分了,还望大家海涵。
顶上来
这是说明你的链接已经释放了,你看下你客户端的线程是不是写的有问题,
要注意最好分三个线程,一个线程接受消息,并将消息存入一个资源列表中,
然后一个线程负责处理,并将处理后的结果送入待发送的队列中
一个线程负责发送处理后的结果,这样就不会有写消息失败的情况了。

服务器端也可以这样设计,只是多几个处理线程。
看一下错误提示就很明了了。
引用 3 楼 solomon_jie 的回复:
这是说明你的链接已经释放了,你看下你客户端的线程是不是写的有问题, 

如果客户端的链接关闭,那么服务端会收到一个空的消息,再进行处理。但现在并没有如此。怎么会链接已释放呢?
还有,CB连接S后,S会计时给CB提供服务,时间到发送消息给CB,CB主动关闭连接。为什么前十几次的连接都不会出错?而且怎么会突然弹出几十个错误?
引用 4 楼 yilanwuyu123 的回复:
看一下错误提示就很明了了。

我需要原因。为什么会在NetworkStream.Write阻塞?这个语句不是立即返回的吗?难首跟缓冲区有关?关键的关键是为什么会是在多次连接后才发生这种问题?
引用 4 楼 yilanwuyu123 的回复:
看一下错误提示就很明了了。

我需要原因。为什么会在NetworkStream.Write阻塞?这个语句不是立即返回的吗?难首跟缓冲区有关?关键的关键是为什么会是在多次连接后才发生这种问题?

有关测试的流程问题!急!!! ADO连接数据库的另类问题。 大家都在做什么系统?跟贴有分!散分了!(七贴) 学习mysql,从安装到具体操作的具体教程,我刚才还发了一个mysql 操作的帖子,我看了该教程后,现在我已经操作自如了!,好资源大家共享\0 在连接数据库时总是报 The Network Adapter could not establish the connection,请各位帮忙 请问这是什么错误Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) ========敬 告 贴 友======= 哪里有OLYMPUS CAMEDIA Master 4.0/Pro 4.0 (Windows 版)? 如何给属性页添加图标 关于WTL中使用线程的问题 請問用diskpart命令可把c盤原設的7G加大到20G嗎? 恢复时,表空间文件突然变小了 在线请教----发送电子邮件的程序,但发布后,邮件发不出去,且没有异常. 这是怎么回事. ysqu请辞,批准 父类怎么无法得到(Request.Cookies)子类的值 如何通过CSS定制button? 第一次和MM约会去什么地方好啊? 求创意啊~~~~~~~~~~~~up有分 在eclipse下使用hibernate的插件连接数据库时总是报 The Network Adapter could not establish the connection,请各位帮忙 各位高人,如何在asp中用ftp方式上传文件呢? 如何在一个表中筛选出另一个表中没有的项 输入法 请教高手们小小问题:如何在程序中使用udl文件呢?多谢! 用什么函数能使程序自己终止? 请问IIS访问的问题!怪! 哪里可以下载到win2000 professional操作系统,请各位帮忙. 请问哪里能下到FLASH7阿?我的光盘坏了。网兄弟们给个下载地址 请问怎么装linux双系统 有想跳槽的吗 求随机查找出一条记录的SQL语句