所以我尝试从 javascript 发送端口敲门序列。
TCP 部分对于 websockets 来说已经足够简单了。
我读到,WebRTC 是浏览器提供的最接近发送 UDP 数据包的功能...但是 WebRTC 仅仅为了尝试发送 UDP“敲门”就需要消化很多内容。
是否有可能使用 WebRTC 通过 UDP“敲门”?如果是这样,请提供一个简单的例子。我只是在寻找一个简单的工作示例。 IE。要通过 TCP“敲门”,您可以使用以下命令:
var sock = new WebSocket("ws://"+ host +":"+ port);
最佳答案
实际上可以使用浏览器发送UDP数据包。
您可以编写一个 Chrome 扩展程序(应用程序),它可以让您访问 https://developer.chrome.com/apps/sockets_udp (manifest.json 中的 "sockets": {...}
)。
或者,就 WebRTC 而言:
var pc = new webkitRTCPeerConnection(
{ "iceServers": [{ "url": "stun:localhost:1234" }] }
);
pc.createOffer(function (sessionDescription) {
pc.setLocalDescription(sessionDescription);
}, function(error) {
alert(error);
}, { 'mandatory': { 'OfferToReceiveAudio': true, 'OfferToReceiveVideo': true } });
还有一个快速的 ruby 脚本
需要“套接字”
$port = 1234
t = Thread.start do
server = UDPSocket.open
server.bind(nil, $port)
4.times do
a = server.recvfrom(12364)
p a
p server.send "ping", 0, a[1][2], a[1][1]
end
end
t.join
["\x00\x01\x00\x00!\x12\xA4B0PgJcgcqalrO", ["AF_INET", 51881, "192.168.0.27", "192.168.0.27"]] 4 ["\x00\x01\x00\x00!\x12\xA4Bbmfxf2ABsZws", ["AF_INET", 53092, "192.168.0.27", "192.168.0.27"]] 4 ["\x00\x01\x00\x00!\x12\xA4B0PgJcgcqalrO", ["AF_INET", 51881, "192.168.0.27", "192.168.0.27"]] 4 ["\x00\x01\x00\x00!\x12\xA4Bbmfxf2ABsZws", ["AF_INET", 53092, "192.168.0.27", "192.168.0.27"]]
我不确定这是否符合“端口敲门序列”的条件。
引用号:https://www.webrtc-experiment.com/docs/webrtc-for-beginners.html
关于javascript - 在浏览器中使用 Javascript 端口敲击 UDP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27556937/