套接字上的发送次数是否有最大值?我的发送工作达到大约480个发送,之后它开始返回-1
我正在使用Visual Studio 2008 vc ++和使用ACE的套接字编程。
答案 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)
据我所知,没有这样的限制。我已经连续几天发送数据,没有任何问题。
显然还有其他一些问题。请详细说明。
也可能是您发送了太多数据并填满了缓冲区。检查一下。