我正在將udp單播數據包從windows發送到linux。在Linux上升壓udp接收器失敗
我寫了簡單的應用udp客戶端和srever使用boost。
我在Linux上運行Windows和服務器(udp接收器)上的客戶端(udp發件人)。
我的客戶端發送udp數據包,但我的udp接收器在Linux上沒有收到數據包。但我可以看到wireshark上的udp數據包(正在我的linux pc上運行)。
我測試了端口和ipaddress,都是正確的。
下面是在linux上運行的代碼。
如果我運行在Windows上(客戶端和服務器),它工作正常
using boost::asio::ip::udp;
class udp_server
{
public:
udp_server(boost::asio::io_service& io_service)
: socket_(io_service, udp::endpoint(udp::v4(), 7799))
{
start_receive();
}
private:
void start_receive()
{
socket_.async_receive_from(
boost::asio::buffer(recv_buffer_), remote_endpoint_,
boost::bind(&udp_server::handle_receive, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
}
void handle_receive(const boost::system::error_code& error,
std::size_t /*bytes_transferred*/)
{
if (!error || error == boost::asio::error::message_size)
{
start_receive();
}
}
udp::socket socket_;
udp::endpoint remote_endpoint_;
boost::array<char, 1> recv_buffer_;
};
int main()
{
try
{
boost::asio::io_service io_service;
udp_server server(io_service);
io_service.run();
}
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
}
return 0;
}
我不能幫助您與您的代碼,但是你從boost.org複製代碼示例到底是什麼?如果不是從該開始 – NoSenseEtAl