- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在为自己设计服务器/客户端系统。我创建了一个扩展自 QTcpServer
的类并定义 QMap <ClientName, int> sockets
处理连接的客户端。 sockets
客户端可以连接到服务器 map 不包含具有相同 ClientName
的套接字作为新客户。所以,当新套接字连接到服务器时,我存储客户端 Pair <ClientName, SocketDescriptor>
在qmap中。有了这些解释,我应该在客户端 disconnects
时从 qmap 中删除客户端描述符。从服务器。所以,我创建插槽 void disconnected()
并按如下方式实现:
void MyServer::disconnected()
{
QTcpSocket* socket = (QTcpSocket*) sender();
ClientType socketType = ClientTypeNone;
foreach(ClientType key, _sockets.keys())
{
if (sockets.value(key) == socket.socketDescriptor())
{
socketType = key;
break;
}
}
if (socketType != ClientTypeNone)
{
sockets.remove(socketType);
}
}
但是,socket.socketDescriptor
是-1,而我在下面的代码中设置了它:
void MyServer::inComingConnection(qintptr socketDescriptor)
{
QTcpSocket* socket = nextPendingConnection();
connect(s, SIGNAL(readyRead()), this, SLOT(readyRead());
connect(s, SIGNAL(disconnected()), this, SLOT(disconnected());
socket->setSocketDescriptor(socketDescriptor);
}
哪里出了问题?
最佳答案
这是QT助手的答案,也许有帮助,
qintptr QTcpServer::socketDescriptor() const
返回服务器用来监听传入指令的 native 套接字描述符,如果服务器未在监听,则返回-1。
如果服务器正在使用 QNetworkProxy
,则返回的描述符可能无法用于 native 套接字函数。
关于qt - QTcpSocket 的 SocketDescriptor 为 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19892956/
void server::incomingConnection(qintptr socketDescriptor) { qDebug() set_socket_descriptor(socke
我正在为自己设计服务器/客户端系统。我创建了一个扩展自 QTcpServer 的类并定义 QMap sockets处理连接的客户端。 sockets 客户端可以连接到服务器 map 不包含具有相同
我是一名优秀的程序员,十分优秀!