• 10945阅读
  • 3回复

QtcpSocket获取客户端Ip地址问题 [复制链接]

上一主题 下一主题
离线zheguzai
 

只看楼主 倒序阅读 楼主  发表于: 2013-11-21
写了一个多线程的Tcpserver程序,看到Qtcpsocket用peerAddress()函数可以获取连接后的客户端的ip地址,可是我用客户端连接后,获取到的地址和端口还有客户端名都是空的,什么问题啊 ??


下面是客户端连接时,服务端开启的线程函数,在这个函数里边获取的客户端地址都是空的
  1. void MutipleThread::run()
  2. {
  3.     socket = new QTcpSocket();
  4.     qDebug()<<"perr:"<<socket->peerAddress().toString();
  5.     qDebug()<<"name:"<<socket->peerName();
  6.     qDebug()<<"port:"<<socket->peerPort();
  7.     if (!socket->setSocketDescriptor(socketDescriptor))
  8.         qDebug()<<"error";
  9.     connect(socket,SIGNAL(readyRead()),this,SLOT(readData()));
  10.     connect(socket,SIGNAL(destroyed()),this,SLOT(terminate()));
  11.     exec();
  12. }


另外,客户端连接上之后,是可以正常给服务端发送数据
离线bugmenot2007

只看该作者 1楼 发表于: 2018-11-21
socket对应的是new,而不是你当前正在连接的,可以把socket直接添加为private成员,然后直接使用即可
离线alan_gy

只看该作者 2楼 发表于: 2020-08-13
setSocketDescriptor之后再获取
离线kenbe

只看该作者 3楼 发表于: 2020-08-14
/* *.h*/
protected:
    void incomingConnection(int handle);

/* *.cpp*/
void TcpServer::incomingConnection(int handle)
{
    client = new QTcpSocket(this,handle);
    client->setSocketDescriptor(handle);

    emit ClientConnect(handle, client->peerAddress().toString(),client->peerPort());

}
快速回复
限100 字节
 
上一个 下一个