Я использую winsock и C++ для настройки серверного приложения. Проблема, с которой я сталкиваюсь, заключается в том, что вызов listen
приводит к первому исключению. Я предполагаю, что обычно их можно игнорировать (?), Но я обнаружил, что другие имеют ту же проблему, что и я, где это заставляет приложение зависать каждый раз в то время. Любая помощь будет принята с благодарностью.Socket Exception: «Больше нет конечных точек от устройства отображения конечных точек»
первый шанс исключение:
первого шанса исключение в 0x * 12345678 * в MyApp .exe: 0x000006D9: Есть не более конечных точек, доступных из конечных точек.
Я нашел некоторые доказательства того, что это может быть причиной сокета. И код, с которым я работаю, выглядит следующим образом. Исключение происходит при вызове listen
в пятой строке снизу.
m_accept_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (m_accept_fd == INVALID_SOCKET)
{
return false;
}
int optval = 1;
if (setsockopt (m_accept_fd, SOL_SOCKET, SO_REUSEADDR,
(char*)&optval, sizeof(optval)))
{
closesocket(m_accept_fd);
m_accept_fd = INVALID_SOCKET;
return false;
}
struct sockaddr_in local_addr;
local_addr.sin_family = AF_INET;
local_addr.sin_addr.s_addr = INADDR_ANY;
local_addr.sin_port = htons(m_port);
if (bind(m_accept_fd, (struct sockaddr *)&local_addr,
sizeof(struct sockaddr_in)) == SOCKET_ERROR)
{
closesocket(m_accept_fd);
return false;
}
if (listen (m_accept_fd, 5) == SOCKET_ERROR)
{
closesocket(m_accept_fd);
return false;
}
Это прослушивание выполняется только при запуске? Является ли порт привязанным к динамическому? Сколько портов вы слушаете в любой момент? – 2008-11-07 16:59:49