QT 编程QTcpSocket 类write函数
intQUpnpControlPoint::performHTTPAction(constQByteArray&sendBuffer,QByteArray&receive...
int QUpnpControlPoint::performHTTPAction(const QByteArray& sendBuffer, QByteArray& receiveBuffer, int /*contentType*/)
{
if(m_httpAddress.isEmpty() || sendBuffer.isEmpty())
{
return 0;
}
QTcpSocket socket;
socket.connectToHost(m_httpAddress, m_httpPort);
socket.setSocketOption(QAbstractSocket::LowDelayOption, 1);
if (!socket.waitForConnected())
{
return 0;
}
socket.write(sendBuffer);
socket.waitForBytesWritten();
while (socket.waitForReadyRead(60000))
{
while (socket.bytesAvailable())
{
receiveBuffer += socket.readAll();
}
}
socket.close();
return 1;
}哪位大侠解释一下这个函数作用啊,像是QT的一些基础,不过,网上关于QTcpSocket的东西网上很少哦 展开
{
if(m_httpAddress.isEmpty() || sendBuffer.isEmpty())
{
return 0;
}
QTcpSocket socket;
socket.connectToHost(m_httpAddress, m_httpPort);
socket.setSocketOption(QAbstractSocket::LowDelayOption, 1);
if (!socket.waitForConnected())
{
return 0;
}
socket.write(sendBuffer);
socket.waitForBytesWritten();
while (socket.waitForReadyRead(60000))
{
while (socket.bytesAvailable())
{
receiveBuffer += socket.readAll();
}
}
socket.close();
return 1;
}哪位大侠解释一下这个函数作用啊,像是QT的一些基础,不过,网上关于QTcpSocket的东西网上很少哦 展开
1个回答
展开全部
if(m_httpAddress.isEmpty() || sendBuffer.isEmpty())
{
return 0;
}//服务器地址或者需要发送的数据为空直接返回
QTcpSocket socket;
socket.connectToHost(m_httpAddress, m_httpPort);//建立一个TCP连接,主机地址是m_httpAddress,端口号是httpPort
socket.setSocketOption(QAbstractSocket::LowDelayOption, 1);//优化为最低延迟,后面的1代码启用该优化。
if (!socket.waitForConnected())
{
return 0;
}
//等待连接,如果超过3s没有客户端连接将退出。
socket.write(sendBuffer);//开始传输数据
socket.waitForBytesWritten();
while (socket.waitForReadyRead(60000))//在6s内完成数据的传输
{
while (socket.bytesAvailable())
{
receiveBuffer += socket.readAll();
}//如果传输数据不为0,那么接受数据buffer加上该值
}
socket.close();//关闭I/O数据传输以及Tcp连接,并重置主机名和端口号
{
return 0;
}//服务器地址或者需要发送的数据为空直接返回
QTcpSocket socket;
socket.connectToHost(m_httpAddress, m_httpPort);//建立一个TCP连接,主机地址是m_httpAddress,端口号是httpPort
socket.setSocketOption(QAbstractSocket::LowDelayOption, 1);//优化为最低延迟,后面的1代码启用该优化。
if (!socket.waitForConnected())
{
return 0;
}
//等待连接,如果超过3s没有客户端连接将退出。
socket.write(sendBuffer);//开始传输数据
socket.waitForBytesWritten();
while (socket.waitForReadyRead(60000))//在6s内完成数据的传输
{
while (socket.bytesAvailable())
{
receiveBuffer += socket.readAll();
}//如果传输数据不为0,那么接受数据buffer加上该值
}
socket.close();//关闭I/O数据传输以及Tcp连接,并重置主机名和端口号
更多追问追答
追问
感谢回答
while (socket.waitForReadyRead(60000)) {
while (socket.bytesAvailable())
{
receiveBuffer += socket.readAll();
} }
这段还是有点疑问,首先那个60000应该是60秒吧,其次如果一直没有数据过来,该函数就等待60秒后就跳出while了吗?如果接到了呢?比如30秒的时候就接到了,会不会接续等待剩下的30秒呢?
追答
1.不好意思我给看成6000了。
2.正如你所想,该while只会在超时的时候才会退出去。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |