【发布时间】:2013-09-09 12:50:34
【问题描述】:
大家好,我做了一个服务器和一个客户端,在 loaclHost 中,这个程序运行良好,但是当我将 localHost 更改为我的 ip 时,客户端不再接收所有数据,所以我决定重写代码。这是我的新代码的一部分:
void fenPrincipal::test()
{
qDebug()<<tailleContenu<<"taille Contenu 1";
QDataStream in(actualSocket);
if (tailleContenu == 0)
{
if (actualSocket->bytesAvailable() < (int)sizeof(quint64))
return;
in >> tailleContenu;
qDebug()<<tailleContenu<<"taille Contenu";
}
a = actualSocket->bytesAvailable();
qDebug()<<actualSocket->bytesAvailable()<<"byte available";
if ( a < tailleContenu)
{
return;
}
else if (a>tailleContenu){
QString messageRecue;
in >> messageRecue;
qDebug()<<messageRecue<<"message";
tailleContenu=0;
}
}
这里是调试信息:
1448 byte available
"Dragon Age: Inquisition -Du gameplay, des images et des détails" titre <- it's the second information send by the server
0 taille Contenu 1
2812 taille Contenu
1310 byte available
2812 taille Contenu 1
1460 byte available
2812 taille Contenu 1
2920 byte available
"" message
0 taille Contenu 1
30962754250670195 taille Contenu
1452 byte available
30962754250670195 taille Contenu 1
2912 byte available
30962754250670195 taille Contenu 1
4372 byte available
30962754250670195 taille Contenu 1
5832 byte available
30962754250670195 taille Contenu 1
6806 byte available
有人可以帮助告诉我为什么它不工作以及如何让我的客户工作?
【问题讨论】:
-
我认为,您的 IP 地址无效。检查ipconfig并确认。如果无效,请继续使用 localhost/127.0.0.1。还请提供更多信息来改进您的示例代码。
-
这不是ip问题,客户端有登录页面,所以如果客户端找不到服务器,客户端将停留在登录页面,服务器向客户端发送4个信息,第一个是消息的类型(例如:聊天消息或新闻消息),第二个是新的标题(一个 QString),第三个是新闻的内容(一个 QString),最后一个是源(一个 QString),客户端服务器接收到第 2 条信息,但没有收到第 3 条信息(长文本)
-
写完第2个标题后,通过server->waitForBytesWritten(4000)延迟设置Server,然后server->write(data);
-
您的解决方案一半有效,客户端接收所有数据,但是当我尝试使用过度内容(长文本,数据包)时,它不再起作用了
标签: qt tcp client-server qtcpsocket