我有一个由主服务器和分布式从服务器组成的程序.从属服务器向服务器发送状态更新,如果服务器在固定时间内没有从特定从属设备收到消息,则它将从属设备标记为关闭.这种情况一直在发生.
通过检查日志,我发现从服务器只能向服务器发送一个状态更新,然后永远不能发送另一个更新,总是无法调用connect()"无法分配请求的地址(99).
奇怪的是,从服务器能够向服务器发送多个其他更新,并且所有连接都发生在同一端口上.似乎这种失败的最常见原因是连接处于打开状态,但我无法找到任何未解决的问题.还有其他可能的解释吗?
为了澄清,这是我如何连接:
struct sockaddr *sa; // parameter
size_t sa_size; //parameter
int i = 1;
int stream;
stream = socket(AF_INET,SOCK_STREAM,0);
setsockopt(stream,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));
bindresvport(stream,NULL);
connect(stream,sa,sa_size);
Run Code Online (Sandbox Code Playgroud)
此代码用于获取与另一个服务器的连接,并且这4个调用中的任何一个失败都会导致该函数失败.