Я пытаюсь отправить шестнадцатеричные данные на другое устройство. Компиляция не приводит к ошибкам. Но когда я запускаю функцию из терминала, ничего не происходит, но должен включиться свет. Я поставил cout на connect (), чтобы увидеть, есть ли у меня проблемы с подключением, но он отвечает 0 (так что у меня нет проблем), может быть, это как я пишу шестнадцатеричный код? Помимо кода я также вставляю командную строку, которую я выполняю с шестнадцатеричным кодом. Странно то, что если я использую любую программу, например PacketSender, с такими же параметрами, она работает.
. / Main 192.168.2.170 26810000A7
во вложении, я также добавляюснимок экрана, сделанный на PacketSender. Кроме того, я могу сказать, что если я оставлю команду recv () в коде, как только дам команду из терминала, приглашение останется в ожидании ... если вместо этого я прокомментирую recv (), как только я дамкоманда из приглашения возвращается в приглашение, но ничего не предпринимает (поэтому не включает свет). У кого-нибудь есть идеи?
введите описание изображения здесь
#include <stdio.h>
#include <errno.h>
#include <string>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <cstring>
#include <unistd.h>
#include <iostream>
#include <unistd.h>
using namespace std;
// per compilare gcc connect_PE.cpp -lstdc++ -o main
int main(int argc, char *argv[])
{
int sockfd, n;
struct sockaddr_in servaddr;
std::string serveraddr = argv[1];
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = inet_addr(serveraddr.c_str());
servaddr.sin_port = htons(9761);
connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
cout << connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
const std::string hex = argv[2];
char *number = strcpy(new char[hex.length() + 1], hex.c_str());
send(sockfd, &number, 8, 0);
recv(sockfd, &number, 8, 0);
}