2009-02-26 63 views
1

我有一个.net 2.0应用程序,它使用System.Net.Sockets Send()方法定期发送数据,例如,每一分钟。本质上它是一个套接字服务器。大多数情况下,没有客户端连接来接收这些数据,但偶尔用户会运行一个应用程序,该应用程序将连接到监视定期发送的数据。在每个时间间隔中,我将发送的最多约为1024个字节,而大多数消息要小得多。C#套接字服务器发送问题

我的问题是什么影响系统资源调用Send()每分钟没有人接收它有?这最终会消耗我所有的记忆吗?我已经读过,Windows套接字是基于Berkeley套接字创建的文件描述符。是否有一些低级标准输出(stdout)正在执行,并且未收到的数据只是进入黑洞?

回答

1

什么影响系统资源调用Send()每分钟没有人接收它有?

应该没有 - 它应该会因为套接字未打开而引发错误。

这最终会吃掉我所有的记忆吗?

不,它应该只是抛出一个错误。

是否有一些低级标准输出(stdout)正在执行,并且未收到的数据只是进入黑洞?

数据确实被抛弃了,如果你注意到了,你会看到错误。

在发送之前,您应该首先检查套接字是否打开。如果没有人连接,请勿发送。一个额外的if语句。

-Adam

+0

谢谢,我将添加代码以查看是否有人连接。我认为数据被扔掉了,因为在我的测试中,它只是发送,并没有抛出异常,我的进程内存使用量没有增加。 – 2009-02-26 20:41:17