2010-09-07 64 views
1

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

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

+0

您需要提供有关您正在使用的系统和开发环境的其他信息。比如“在Windows Server 2008上使用Visual C++下的WinSocks ...”。 – tidwall 2010-09-07 06:07:22

+0

请正确标记您的问题。这与C或C++作为编程语言没有多大关系。 – 2010-09-07 11:45:14

回答

2

不,您可以调用的send()的数量没有上限。 (例如:'perror(“error sending。system said”);')调用以查看哪个错误正在生成。

请注意,在这种情况下-1是一个通用的返回码,可能意味着任何内容从“我的套接字关闭”到“您给我的参数不是有效的文件描述符”;因此,如果没有进一步的信息,很难说出正在发生的事情。

编辑:假设上述答案* NIX;这是一个可怜的假设。

由于您使用ACE,请查看ACE :: send()文档(doxygen是here)。此外,应该有一个ACE_OS :: perror(“error sending。system said”)调用(doxygen是here),它应该与我上面描述的类似。

HTH

+0

好的。我来看看那个.thanks – aks 2010-09-07 06:36:49

2

没有具体的限制,但显然你不能继续以节点速度抽出它,如果接收方没有尽快消耗速度。它们之间有各种缓冲区,无论软件/硬件维护什么,都会限制它们接受的数量。您需要等到接收方在继续发送之前消耗一些数据。你可以得到一个异步通知,告诉socket何时变得可写入......如果你使用的是BSD API,请检查select或poll的细节。

+0

我的接收器正在阻塞等待,没有数据读取,所以这不是问题 – aks 2010-09-07 06:07:54

+0

如果我是你,我不会赌注:-)。无论接收器的状态如何,您只需要在路径的任何地方都需要一个缓冲区来暂时被淹没,并且发送端将会失败。真的,你应该尝试我所建议的,然后再告诉我我错了。 – 2010-09-07 06:15:30

+0

好的..我应该多久检查一次?每次发送? – aks 2010-09-07 06:20:32

0

据我所知没有这样的限制。我已经将这项工作发送了几天,发送数据没有任何问题。

显然还有一些其他问题。请提及更多细节。

此外,它可能是你发送太多的数据并填充缓冲区。检查也。

+0

不...因为我的接收器进入阻塞状态,没有任何数据可读 – aks 2010-09-07 06:07:15