Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c+中的netcat命令+; 当我在C++中进行编码时,我是一个新手。 我目前正在使用qt制作一个简单的GUI,在这里我想通过TCP/IP向设备发送命令_C++_Qt_Netcat - Fatal编程技术网

c+中的netcat命令+; 当我在C++中进行编码时,我是一个新手。 我目前正在使用qt制作一个简单的GUI,在这里我想通过TCP/IP向设备发送命令

c+中的netcat命令+; 当我在C++中进行编码时,我是一个新手。 我目前正在使用qt制作一个简单的GUI,在这里我想通过TCP/IP向设备发送命令,c++,qt,netcat,C++,Qt,Netcat,当我将计算机连接到设备并通过终端发送命令时: echo '3b00010000001b010001000000120000013000002713000300030101' | xxd -r -p | nc 192.168.1.101 30013 这个装置相应地起作用 我需要能够发送这个命令在qt作为一个函数。有人能帮我吗?这是我目前所拥有的(不起作用) 标题: #ifndef SOCKET_H #define SOCKET_H #include <QObject> #inclu

当我将计算机连接到设备并通过终端发送命令时:

echo '3b00010000001b010001000000120000013000002713000300030101' | xxd -r -p | nc 192.168.1.101 30013
这个装置相应地起作用

我需要能够发送这个命令在qt作为一个函数。有人能帮我吗?这是我目前所拥有的(不起作用)

标题:

#ifndef SOCKET_H
#define SOCKET_H

#include <QObject>
#include <QTcpSocket>
#include <QtDebug>
#include <string>

using namespace std;

class Socket : public QObject
{
    Q_OBJECT
public:
    explicit Socket(QObject *parent = nullptr);

    void Connect(const QString &host, const string &cmd);

private:
    QTcpSocket *socket;
};

#endif // SOCKET_H

任何帮助都将不胜感激。谢谢。

由于您的命令是固定字符串,您只需直接输入字符即可:

const char data[] = "\x3b\x00\x01\x00\x00\x00\x1b\x01\x00\x01\x00\x00\x00\x12\x00\x00\x01\x30\x00\x00\x27\x13\x00\x03\x00\x03\x01\x01";
Test.Connect("192.168.1.101",string(data, sizeof(data)-1));

请注意,由于数据中嵌入了空字符,您不能简单地将字符串文本传递给
std::string
,因为它会在第一个空字符之前截断字符串。

您可能需要将命令从十六进制转换为二进制?当你打电话给
Connect
时,你的命令和主机也是错误的。很抱歉,这是我的错别字。我已经用正确的方法试过了。我已经更正了我的帖子。如何在C++中从十六进制转换为二进制?有我可以使用的功能吗?尝试过但不起作用。我的connect()函数中的变量可能有什么问题吗?@Frodi我恐怕无法真正帮助解决“不起作用”的问题。你试过调试吗?您是否尝试过使用wireshark检查网络流量?是否正常:)cmd.size参数有一个小问题。现在它就像一个符咒。谢谢:)
Socket.Test
Test.Connect("192.168.1.101","3b00010000001b010001000000120000013000002713000300030101")
const char data[] = "\x3b\x00\x01\x00\x00\x00\x1b\x01\x00\x01\x00\x00\x00\x12\x00\x00\x01\x30\x00\x00\x27\x13\x00\x03\x00\x03\x01\x01";
Test.Connect("192.168.1.101",string(data, sizeof(data)-1));