【发布时间】:2012-12-29 04:39:20
【问题描述】:
我用 C 代码编写了一个 TCP 服务器应用程序,它可以同时处理多个客户端连接。当服务器从一个客户端接收数据时,所有客户端都应该收到它。 我使用 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);
}
}
}
【问题讨论】:
-
你必须考虑一种叫做多播的东西,但你必须小心。如果您不喜欢这样,那么您可以简单地实现一些更天真的东西,服务器将向每个客户端发送它收到的任何内容。这意味着,您将客户端 IP 存储在地图或数组中。
标签: c