毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 移动平台 >> 正文

用QTcpSocket做客户端用来测试TCP,不能接收数据 第2页

更新时间:2012-11-1:  来源:毕业论文

  if((length = TcpSocket->write(Msg.toStdString().c_str(),strlen(Msg.toStdString().c_str()))) != Msg.length())
  {
  qDebug("send fail");
  }
  qDebug("%d", length);
  qDebug()<< Msg;
}

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;

上一页  [1] [2] 

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。