我有这个简单的服务器,5 个客户端可以连接到。现在的问题是我如何决定此刻谁在说话?它适用于一个客户端,因为它使用相同的i读取和发送。当有 2 个客户端连接时,我想发送与发送该消息的客户端相关联的某种类型的唯一 ID,因此下次发送消息时,该 ID 应该与宝贵消息的 ID 相同。
完成连接、发送和接收的服务器代码的小片段。
while (true)
{
this->readingSockets = this->openSockets;
this->socketBind = select(getdtablesize(), &this->readingSockets, NULL, NULL, (struct timeval *)NULL);
if (FD_ISSET(sD, &this->readingSockets))
{
cD = accept(sD, (struct sockaddr *)&this->clientAdr,(socklen_t*) &this->sCadr);
FD_SET(cD, &this->openSockets);
continue;
}
for (int i=0; i<getdtablesize(); i++)
if (i != sD && FD_ISSET(i, &this->readingSockets))
{
this->socketBind = read(i, this->buf, sizeof(buf));
g1.cast(buf,id);//where i'd like to send that unique id
if (this->socketBind == 0)
{
FD_CLR(i, &this->openSockets);
close(i);
}
else
{
send(i,g1.getA(),g1.getSize(),0);
g1.setMsg(c);
}
}
}
此致。