qt UDP 本机多个客户端连接服务器

来源:互联网 发布:com域名和cn域名 编辑:程序博客网 时间:2024/05/22 09:07

void panel::init()

{

    udpSocket = new QUdpSocket(this);

    udpSocket->bind(19730,QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);

    QString msgType = "MSG_CLIENT_NEW_CONN";

    QByteArray block;//用于暂存要发送的数据

    QDataStream out(&block, QIODevice::WriteOnly);//使用数据流写入数据

    out.setVersion(QDataStream::Qt_4_6);//设置数据流的版本,客户端和服务器端使用的版本要相同

    out << (quint16)0 << msgType << usrname;//设置发送长度初始值为0,设置发送内容

    out.device()->seek(0);//回到字节流的起始位置

    //往套接字缓存中写入数据,并发送

    udpSocket->writeDatagram(block.data(), block.size(), QHostAddress(ip), (quint16)port.toUInt()+1);

    connect(this->udpSocket, SIGNAL(readyRead()), this, SLOT(recvMsg()));

}


一直出现的错误是当第二个客户端连接的时候,好友列表并不显示新登录的好友,后来加上标红的那句就可以了

//此处的bind是个重载函数,连接本机的port端口,采用ShareAddress模式(即允许其它的服务连接到相同的地址和端口,特别是    //用在多客户端监听同一个服务器端口等时特别有效),和ReuseAddressHint模式(重新连接服务器)
ip本机回环 127.0.0.1 端口 19730

0 0
原创粉丝点击