繁体   English   中英

Rust 不接收来自 C++ 的 UDP 消息

[英]UDP messages from C++ are not received by Rust

我正在使用 UDP 创建服务器/客户端范例,但 Rust 服务器没有接收 C++ 客户端消息。 我已经能够成功地进行 Rust 服务器/Rust 客户端和 C++ 服务器/Rust 客户端通信。

这让我相信我的 C++ 代码存在问题,或者在将 C++ 缓冲区发送到 Rust 时存在某种类型的错误通信,但我使用了我认为有效的代码。 这只是从同一台计算机发送和发送到同一台计算机,并没有扩展到计算机到计算机。

我不是 UDP / TCP 方面的专家,所以我可能做错了一些事情

锈服务器:

use std::net::UdpSocket;

fn main() {
    let udp: UdpSocket = UdpSocket::bind("0.0.0.0:12000")
        .expect("Failed to bind to address for sending/receiving messages");

    udp.connect("127.0.0.1:12683")
        .expect("Failed to connect address receiving our messages");

    //The below (recv_from) is set to blocking
    let mut buf = [0; 20];
    let (number_of_bytes, src_addr) = udp.recv_from(&mut buf).expect("Didn't receive data");
    let filled_buf = &mut buf[..number_of_bytes];
    println!("{:?}", filled_buf);
}

C++客户端:

boost::asio::io_service io_service;
ip::udp::socket socket( io_service );
ip::udp::endpoint remote_endpoint;
std::cout << "sending reply..." << std::endl;
socket.open( ip::udp::v4() );

remote_endpoint = ip::udp::endpoint( ip::address::from_string( "127.0.0.1" ), 12000 );
unsigned char buff[8]{ 5,5,5,5,5,5,5,5 };
boost::system::error_code err;
//auto sent = socket.send_to( buffer( "Jane Doe"), remote_endpoint, 0, err );
auto sent = socket.send_to( buffer( buff ), remote_endpoint, 0, err );
std::cout << err << std::endl;
std::cout << "Sent: " << sent << std::endl;
socket.close();

C++ 客户端声明数据已发送( sent变量)并且没有 err( err变量)。 但是,我的 Rust 服务器从未接收到数据。 它被设置为非阻塞,所以它只是坐在那里等待接收数据(当客户端发送到端口 12000 时,它查看端口 12000)。

当您连接 UDP 套接字时,这会导致 UDP 套接字仅从其连接的地址接收数据报。 服务器不应连接其 UDP 套接字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM