Ich verwende winsock und C++, um eine Server-Anwendung einzurichten. Das Problem, das ich habe, ist, dass der Aufruf an listen
eine erste Chance-Ausnahme ergibt. Ich denke, normalerweise können diese ignoriert werden (?), Aber ich habe andere mit dem gleichen Problem gefunden, das ich bin, wo es die Anwendung verursacht, hin und wieder zu hängen. Jede Hilfe würde sehr geschätzt werden.Socket-Ausnahme: "Es sind keine weiteren Endpunkte vom Endpunkt-Mapper verfügbar"
Die erste Chance Ausnahme:
Erste-Chance-Ausnahme bei 0x * 12345678 * in MeineAnw .exe: 0x000006D9: Es sind keine weiteren Endpunkte von der Endpunkt-Zuordnung verfügbar.
Ich habe einige Beweise gefunden, dass dies durch den Sockel verursacht werden könnte. Und der Code, mit dem ich arbeite, ist wie folgt. Die Ausnahme tritt beim Aufruf von listen
in der fünften Zeile von unten auf.
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;
}
Wird dieses Abhören nur beim Start durchgeführt? Ist der Port für dich dynamisch? Wie viele Ports hören Sie gleichzeitig? –