Изменение Perl-кода UDP для современного повышения, ошибки в пакетеC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Изменение Perl-кода UDP для современного повышения, ошибки в пакете

Сообщение Anonymous »

Я нашел старый код в Perl, который создает пакет для отправки в программу:
исходный код.
Соответствующая часть:

Код: Выделить всё

my $discovery_socket = IO::Socket::INET->new(
Proto => 'udp',
LocalAddr => '0.0.0.0',
LocalPort => 3040,
) or die "Can't bind udp/3040: $!";

my $discovery_io = IO::Async::Socket->new(
handle => $discovery_socket,
on_recv => sub {
my ($self, $dgram, $addr) = @_;
my ($err, $hostname, $portname) = Socket::getnameinfo($addr);
my (undef, undef, $seq) = unpack "ccna6xx", $dgram;
print "Received identify with seq $seq from $hostname/$portname\n";
my $header = pack "ccna6xx",
0x5a, # magic
1, # identify reply
$seq,
"\x00\x24\x1d\x8b\x0e\x50";
my $identify = pack "nccccccC4C4C4a4a4a4a32",
1, 1, 1, 1, # uptime
1, # mode
0, # alert
4, # ip type
192, 168, 1, 3, # ip addr
255, 255, 255, 0, # netmask
192, 168, 1, 1, # gateway
"\x01\x02\x03\x04", # app ver
"\x01\x02\x03\x04", # boot ver
"\x01\x02\x03\x04", # app ver
"PL ETH/USB"; # name

send $discovery_socket, $header .  $identify, 0, $addr;
},
on_recv_error => sub {
my ($self, $errno) = @_;
die "recv error $errno on discovery";
}
);
Я попытался воссоздать это с помощью следующей функции на C++ (плюс другой окружающий код, который, вероятно, не имеет отношения к делу:

Код: Выделить всё

void handle_receive(const boost::system::error_code& error,
std::size_t bytes_transferred) {
if (!error || error == boost::asio::error::message_size) {
std::string hostname = remote_endpoint_.address().to_string();
unsigned short port = remote_endpoint_.port();
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78514774/modifying-udp-perl-code-to-modern-boost-errors-in-packet[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»