マルチクライアントサーバーを作ろうとしています。私はこのスレッドを持っています:
void client_thread(int new_socket)
{
int size;
char inbuffer[BUF];
do
{
cout << "Waiting for messages: " << endl;
size = recv(new_socket, inbuffer, BUF, 0);
} while (true);
}
そしてこの主な手順:
int main()
{
while (true)
{
//waiting for clients
cout << "Waiting for connections..." << endl;
new_socket = accept ( create_socket, (struct sockaddr *) &cliaddress, &addrlen );
//new client connected
if (new_socket > 0)
{
//start thread
thread(client_thread, new_socket).join();
}
}
return 0;
}
最初のクライアントが接続すると、スレッドが開始され、サーバーはクライアントからのメッセージを待ちます。しかし、サーバーはもはや新しいクライアントを待ちません。どうしてか分かりません。do-while
スレッド関数内の無限ループが原因ですか? スレッドに無限ループが含まれている場合、スレッドがプログラム全体をブロックする場合、スレッドのポイントは何ですか?