【发布时间】:2014-05-18 11:03:17
【问题描述】:
我编写了 C++ 客户端服务器应用程序,但服务器正在崩溃。 场景
- 启动服务器
- 1 小时后(不是之前)客户端连接
然后等待接受的服务器返回-1,错误码为“打开的文件太多”。
没有什么特别的东西在机器上运行,这让我相信accept在等待时打开了许多文件描述符。 真的吗? 我该如何解决这个问题,以便客户端可以随时连接?
相关服务器代码:
int sockClient;
while (true) {
sockaddr_in* clientSockAddr = new sockaddr_in();
socklen_t clientSockAddrLen = sizeof(sockaddr_in);
sockClient = accept(sockServer, (sockaddr *) clientSockAddr,
&clientSockAddrLen);
if(sockClient == -1 ){
std::ostringstream s;
s << "TCP Server: accept connection error." << std::strerror(errno);
throw runtime_error(s.str());
}
connection->communicate(sockClient, clientSockAddr, clientSockAddrLen);
}
【问题讨论】:
标签: c++ tcp client-server