- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 Rust 试验 BitTorrent 跟踪器协议(protocol)时遇到了这个问题。
这个应该使用 UDP 套接字发送一些数据的简单程序失败了:
use std::collections::HashSet;
use std::io::net::addrinfo;
use std::io::net::ip::{Ipv4Addr, SocketAddr, IpAddr};
use std::io::net::udp::UdpSocket;
fn main() {
let addr = SocketAddr { ip: Ipv4Addr(127, 0, 0, 1), port: 34254 };
let mut socket = match UdpSocket::bind(addr) {
Ok(s) => s,
Err(e) => panic!("couldn't bind socket: {}", e),
};
let host_addr = "tracker.openbittorrent.com";
let port = "80";
let host_ips: HashSet<IpAddr> =
addrinfo::get_host_addresses(host_addr.as_slice()).unwrap().into_iter().collect();
for host_ip in host_ips.into_iter() {
let socket_addr = SocketAddr {
ip: host_ip,
port: from_str(port).unwrap(),
};
println!("Sending to {}", socket_addr);
let data: &[u8] = [0x1, 0x2, 0x3];
println!("{}", socket.send_to(data, socket_addr));
}
}
输出:
Sending to 31.172.63.252:80
Err(invalid argument (Invalid argument))
Sending to 31.172.63.253:80
Err(invalid argument (Invalid argument))
有什么问题吗?
最佳答案
您正在将套接字绑定(bind)到本地主机(环回接口(interface)),然后尝试通过该套接字与不在该接口(interface)上的地址进行通信。如果您改为绑定(bind)到 0.0.0.0
,它将成功。这意味着“所有 ipv4 接口(interface)”。如有必要,您可以绑定(bind)到更具体的地址。
关于sockets - UdpSocket.send_to 失败,返回 "invalid argument",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26732763/
在将 UDPSocket 绑定(bind)到空闲端口号后,我正在尝试获取端口号。所以 udp_server = UDPSocket.newudp_server.bind('localhost', 0)
我正在尝试在 Tokio 中同时处理到达的 UDP 数据包。然而,以下 MWE 没有达到我的预期: extern crate futures; extern crate tokio_core; ext
我有一个运行 std::thread 的 NetworkDevice 类对所有传入的数据包进行排队。在执行此操作时,我还想在相同的 sf::UdpSocket 上发送数据包.我找不到任何关于 sf::
我是ruby新手,跟着《The Ruby Programming Language》这本书,我正在尝试学习一些ruby中的Socket,以下是我的简单服务器/客户端: ## server requir
使用 Rust 的 UdpSocket ,它似乎只有 send()、recv() 和 set_nonblocking(bool)。这是一组相当有限的功能,例如如果 recv() 总是阻塞直到收到数据包
我正在编写一个使用 UDP 发送和接收数据包的应用程序。然而,documentation of recv_from状态: If a message is too long to fit in the
我正在为我的 CS 类(class)开发一款原始的多人战舰游戏。我能够让它运行并通过 LAN 发送信息。为了测试此通信是否有效,我创建了一个带有监听器功能的循环,当确认已从另一台计算机的监听线程接收到
我正在尝试通过 UDPSocket 类向服务器发送一些十六进制数据。 require 'socket' socket = UDPSocket.new socket.send('230055', 0,
我的机器有两个以太网网络接口(interface)。 eno0 和 eno1。 eno0 是接入互联网的地方,eno1 有一个连接的以太网设备。我通过 Link-Local Address 方法得到它
std::old_io::net::udp::UdpSocket已替换为 std::net::UdpSocket , 和 fn set_timeout(&mut self, timeout_ms: O
我想使用 udp 协议(protocol)发送消息。我有一个像这样的网址这个:http://torrent.ubuntu.com:6969/announce。 但是在文档和所有示例中,我看到方法 bi
我正在处理 simple example用于创建 rust udp 客户端/服务器应用程序。但是当尝试使用 send_to 或 recv_from 方法时,我收到以下错误: [E0599] 没有名为
我在使用 Rust 试验 BitTorrent 跟踪器协议(protocol)时遇到了这个问题。 这个应该使用 UDP 套接字发送一些数据的简单程序失败了: use std::collections:
let addr = "239.255.255.250:1982"; let socket = UdpSocket::bind(addr).unwrap(); let message = "some
我正在尝试做相当于 this piece of Ruby 的事情: def color=(color) @color = color any_bar = UDPSocket.new any
我正在尝试发送一个 DatagramPacket,然后必须等待来自服务器的确认,以便我知道我是否必须重新发送相同的数据包或发送下一个数据包...... 我在客户端使用相同的套接字,发送数据包并接收确认
这个问题在这里已经有了答案: Reading from TcpStream results in empty buffer (1 个回答) UdpSocket.recv_from fails with
我刚刚解决了基础架构中的一个延迟问题,该问题是由于此处的代码片段在每次运行代码时触发了对 getaddrinfo 的调用而触发的: sock = UDPSocket.open sock.send("#
我正在使用 mio::udp::UdpSocket 接收对来自客户端的请求的响应。看起来我在触发事件上收到了部分 UDP 数据包。我不确定这是否是 mio 库中的错误。 我已经尝试过 PollOpt:
Editor's note: This code example is from a version of Rust prior to 1.0 and is not valid Rust 1.0 co
我是一名优秀的程序员,十分优秀!