0
Socketの一意のIDを特定する必要があります。それはソケット記述子を使う正しい方法でしょうか? ソケット記述子は一意ですか? (実際のファイル記述子である)着信ソケットでユーザーIDを特定(または接続)する方法はありますか?
例えば
QTcpSocket* pClientSocket = nextPendingConnection();
int id = pClientSocket->socketDescriptor();
User user(id);
/*...*/
void slotReadClient(){
socket = (QTcpSocket*)sender();
user = users.find(socket->socketDescriptor());
user->doAny();
}
私はここで何かを誤解しているかもしれませんが、ローカルで(つまりプロセス内で)固有の識別子を探していますか?ソケット記述子は、ソケットが閉じられていない限り有効です – Hasturkun
新しい接続が発生すると、オブジェクト内にいくつかのユニークなものを保存する必要があります。サンプルを見てください。新しい接続スロットでは、私はオブジェクトのユーザーとconnecti信号とスロットを作成します。 sloReadClientでは、私はユーザーオブジェクト内の何かを変更したい。例えば(抽象コード)QString name = read(socket); user-> setName(name);しかし、どのようにソケットを識別する?私はユーザーの配列を持っており、必要なオブジェクトを変更する必要があります – Lunatik