私は次のコードを持っています:
try
{
HAS::TCPServerSocket servSock(echoServPort); // Socket descriptor for server
std::vector<HAS::TCPSocket*> sockets(MAXCONN);
for (;;)
{
try
{
if (socketCount < MAXCONN)
{
HAS::TCPSocket* sock(servSock.accept());
sockets.push_back(sock);
std::thread handler(handleTCPClient, std::ref(sockets[socketCount++]));
handler.detach();
}
}
catch (...)
{
cerr << "Unable to create thread" << endl;
exit(1);
}
}
}
限られた数の接続を追跡したいのですが、(MAXCONN=4)
を使用して開いたソケットを追跡したいと思いstd::vector
ます。どういうわけか、上記のコードを使用すると、sock
変数はで受け入れられるように現在のソケットに適切に設定されservSock.accept()
ます。ただし、sock
変数を押し込もうとするとstd::vector
、靴下オブジェクトが緩みます。
コピーおよび/または移動コンストラクターを適切に指定する必要があると感じていますが、両方を定義しました(そして、ブレークポイントを使用して、いつ呼び出されるかを確認しました)が、まったく呼び出されないようです。