複数のクライアント接続を同時に処理できる TCP サーバー アプリケーションを C コードで作成しました。サーバーが 1 つのクライアントからデータを受信すると、すべてのクライアントがそれを受信する必要があります。サーバーと複数のクライアント間の接続を作成するためにselect()を使用しましたが、すべてのクライアントが同時に同じデータを受信し、それぞれがデータを送信できるようにする方法がわかりませんサーバ。
read_option(fd) は、アプリケーションで使用される私の関数です
while(1)
{
select (nfds+1, &readfds, NULL, NULL, &tv);
if (FD_ISSET (sd, &readfds))
{
len = sizeof (from);
bzero (&from, sizeof (from));
client = accept (sd, (struct sockaddr *) &from, &len);
if (client < 0)
{
continue;
}
if (nfds < client)
nfds = client;
FD_SET (client, &actfds);
fflush (stdout);
}
for (fd = 0; fd <= nfds; fd++)
{
if (fd != sd && FD_ISSET (fd, &readfds))
{
if (read_option(fd))
{
fflush (stdout);
close (fd);
FD_CLR (fd, &actfds);
}
}
}