複数のクライアントからのメッセージを受け取り、N個のデータを受け取り、このデータのバッチを処理し、すべてのクライアントに返信を「完了」するまで、メッセージを受け入れるサーバーを作成しようとしています。ソケット:複数のクライアントにメッセージを送信
このコードは、クライアントからデータを受け取った直後にクライアントにメッセージ「完了」を送信すると正常に動作します。どのようにして、すべてのクライアントを "保存"し、後でバッチ処理後にメッセージを送信することができますか?
while (true) {
listen(sock, 1000);
newsock = accept(sock, (struct sockaddr *) &cli_addr, &clilen);
n = read(newsock, buffer, read_len);
if (n < 0) {
cout << "ERROR reading from the socket" << endl;
continue;
}
memcpy(data + (msg_count * tuple_size), buffer, tuple_size);
n = write(newsock, "done\n", 5); //sending the message to the current client
msg_count++;
if (msg_count >= batch_size) {
msg_count = 0;
doSomethingWithTheData(data);
//I want to send the message to all the clients here
}
bzero(buffer, read_len);
}
Cookieを設定しましたか? – Arash
@ArashMohammadiいいえ、私はそれらを試していない、私は今それについて読むつもりです。サーバーとすべてのクライアントが同じPCにある場合、クッキーは機能しますか? – vgeclair
クライアントが複数のメッセージを送ることができる場合は、 'select'か' epoll'を調べたいかもしれません。 – user4581301