找回密码
 立即注册
收起左侧

qt 发数据服务器只能收到第一次的

1
回复
6689
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2018-4-3 13:25:36 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 allenboy 于 2018-4-3 13:35 编辑
  1. qt 发数据服务器只能收到第一次的。后面的服务器就收不到了。
  2. 服务器用 python写的。
  3. 关键代码
  4. 开始连接

  5. QByteArray bytePwd = userpasswd.toLatin1();
  6.         QByteArray bytePwdMd5 = QCryptographicHash::hash(bytePwd, QCryptographicHash::Md5);
  7.         userpasswd=bytePwdMd5.toHex();
  8.             tcpSocket->connectToHost(*serverIP,port);
  9.         //int length=0;
  10.         QString msg=username+"%"+userpasswd+"%"+login;
  11.         if (tcpSocket->waitForConnected(1000)){
  12.             qDebug("Connected!");
  13.             qDebug("State:%d\n",tcpSocket->state()); // State: 3(ConnectedState)正确
  14.             tcpSocket->write(msg.toUtf8().data(),strlen(msg.toUtf8().data()));
  15.             qDebug("State:%d\n",tcpSocket->state());
  16.         }
  17. /////////////////////////////////////////////////////检测如果有新可以读信号void Dialog::dataReceived(){
复制代码
  1.      QByteArray datagram;
  2.      datagram.resize(tcpSocket->bytesAvailable());
  3.      tcpSocket->read(datagram.data(),datagram.size());
  4.      QString msg=datagram.data();
  5.      qDebug()<<msg;
  6.      //通过服务端确认
  7.      if(msg=="ok"){

  8.         myCCmyCharDialog = new CCmyCharDialog();
  9.         //设置
  10.         myCCmyCharDialog->setQTcpSocket(this->tcpSocket);
  11.         //ip
  12.         myCCmyCharDialog->setAddandport(this->port,this->serverIP);
  13.         myCCmyCharDialog->set(this->username,this->userpasswd);
  14.         //绑定关闭信号与槽
  15.         connect(myCCmyCharDialog,SIGNAL(myclose()),this,SLOT(ccmyclose()));
  16.         myCCmyCharDialog->show();
  17.         this->hide();

  18.         QString msg=tr("aaaaaaannnnnnnnnnnnnnnnnaaaaaaaaa")+"%"+tr("aaaaaaccccccccccccccccccccaaaaa")+"%"+login;
  19.         tcpSocket->write(msg.toUtf8().data(),strlen(msg.toUtf8().data()));
  20.      }
复制代码
服务器就收不到下面这个了
        QString msg=tr("aaaaaaannnnnnnnnnnnnnnnnaaaaaaaaa")+"%"+tr("aaaaaaccccccccccccccccccccaaaaa")+"%"+login;
        tcpSocket->write(msg.toUtf8().data(),strlen(msg.toUtf8().data()));

回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2018-4-4 23:40:09 显示全部楼层
服务器TCP的粘包有处理吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了