套接字最大发送数量?

时间:2010-09-07 06:01:47

标签: c++ c

套接字上的发送次数是否有最大值?我的发送工作达到大约480个发送,之后它开始返回-1

我正在使用Visual Studio 2008 vc ++和使用ACE的套接字编程。

3 个答案:

答案 0 :(得分:2)

没有特别的限制,但显然如果接收方没有快速消耗它,你不能以结速率将它抽出来。中间有各种缓冲区,无论软件/硬件维护什么都会限制它们接受的程度。在继续发送之前,您需要等到接收方消耗一些数据。您可以获得有关套接字何时再次可写的异步通知...如果您正在使用BSD API,请查看select或poll以获取详细信息。

答案 1 :(得分:2)

不,你可以拨打的send()数量没有上限。

查看the man page for send(或任何适合您平台的页面)并尝试使用perror()(例如:'perror(“错误发送.system say”);')调用以查看哪个错误是正在生成。

注意-1在这种情况下是一般的返回代码,可能意味着从“我的套接字关闭”到“你给我的参数不是有效的文件描述符”;因此,如果没有进一步的信息,很难说出发生了什么。

编辑:上面的答案假定为* NIX;这是一个糟糕的假设。

由于您正在使用ACE,请查看ACE :: send()文档(doxygen是here)。此外,应该有一个ACE_OS :: perror(“错误发送。系统说”)调用(doxygen是here),它应该与我上面描述的类似。

HTH

答案 2 :(得分:0)

据我所知,没有这样的限制。我已经连续几天发送数据,没有任何问题。

显然还有其他一些问题。请详细说明。

也可能是您发送了太多数据并填满了缓冲区。检查一下。

相关问题