void Widget::ClearSend()
{
ui->SendMsg_lineEdit->setText ("");
}
void Widget::ClearReceive()
{
ui->Receive_textBrowser->setText("");
}
我可以肯定的说,用你贴出的代码是没有问题的。我帮你整了一个服务器端的测试程序:
C/C++ code
#ifndef CSERVER_H
#define CSERVER_H
#include <QtNetwork>
class CServer : public QTcpServer
{
Q_OBJECT
public slots:
void start()
{
listen(QHostAddress::Any, 20000);
}
protected:
void incomingConnection(int socketDescriptor)
{
QTcpSocket socket;
if (socket.setSocketDescriptor(socketDescriptor))
{
qDebug() << "connected.";
}
if (socket.waitForReadyRead())
{
qDebug() << socket.readAll();
}
socket.write("hello");
if (socket.state() == QAbstractSocket::ConnectedState)
{
socket.waitForDisconnected();
}
qDebug() << "disconnected.";
}
};
#endif // CSERVER_H
用这个和你的客户端进行通讯,项目可行性研究报告 没有任何问题。 你发送的仍然是字符串呀!这是一个很基础的问题,比如你的数据包00 00 00 00 00 06 01 03 00 1B 00 02
你按二进制形式发送,“00” = 0x00,只占一个字节。而用字符串发送“00” = 0x30 0x30,这是俩字节呀!
你说的网上的测试工具,它发的是二进制数据,和你的不一样。
先把QByteArray这个类看一下,帮助里面已经很明确的告诉你怎么用了
C/C++ code
QByteArray ba;
ba.resize(5);
ba[0] = 0x3c;
ba[1] = 0xb8;
ba[2] = 0x64;
ba[3] = 0x18;
ba[4] = 0xca;