5つのクライアントが接続できるこの単純なサーバーがあります。問題は、現在誰が話しているかをどのように判断するかということです。同じiを使用して読み取りと送信を行うため、1 つのクライアントに対して機能します。2つのクライアントが接続されている場合、そのメッセージを送信したクライアントに関連付けられたある種の一意の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);
}
}
}
よろしくお願いします。