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));