如何在Chrome应用程序上使用Javascript通过UDP发送字符串
我正在编写一个chrome应用程序,我想通过UDP向某个服务器发送一些字符串。我是javascript新手,有点被卡住了。这是一段代码:如何在Chrome应用程序上使用Javascript通过UDP发送字符串,javascript,arrays,udp,google-chrome-app,Javascript,Arrays,Udp,Google Chrome App,我正在编写一个chrome应用程序,我想通过UDP向某个服务器发送一些字符串。我是javascript新手,有点被卡住了。这是一段代码: var wholeString = "what is the meaning of life"; chrome.sockets.udp.create({}, function (socketInfo) { // The socket is created, now we can send some data var s
var wholeString = "what is the meaning of life";
chrome.sockets.udp.create({}, function (socketInfo) {
// The socket is created, now we can send some data
var socketId = socketInfo['socketId'];
var arrayBuffer = stringToArrayBuffer("hello");
chrome.sockets.udp.bind(socketId, "127.0.0.1", 0, function (result) {
chrome.sockets.udp.send(socketId, stringToArrayBuffer(wholeString), "127.0.0.1", 3050, function (sendInfo) {
console.log("sent " + sendInfo.bytesSent);
if (sendInfo.resultCode < 0) {
console.log("Error listening: " + chrome.runtime.lastError.message);
}
});
});
});
我收到的错误消息是:
Error in response to sockets.udp.bind: Error: Invocation of form sockets.udp.send(integer, integer, string, integer, function) doesn't match definition sockets.udp.send(integer socketId, binary data, string address, integer port, function callback)
at Object.callback (chrome-extension://pmkjeflkfhfekliappbhemngaejmnbec/helper.js:45:24)
at Object.callback (chrome-extension://pmkjeflkfhfekliappbhemngaejmnbec/helper.js:42:23)
我以为函数会把我的字符串改成字节数组?有什么问题吗?您的
stringToArrayBuffer
函数中有一个小错误
function stringToArrayBuffer(string) {
var arrayBuffer = new ArrayBuffer(string.length * 2);
var buffer = new Uint8Array(arrayBuffer);
for (var i = 0, stringLength = string.length; i < stringLength; i++) {
buffer[i] = string.charCodeAt(i);
// Was: buffer = string.charCodeAt(i);
}
return buffer;
}
函数stringToArrayBuffer(字符串){
var arrayBuffer=新的arrayBuffer(string.length*2);
var buffer=新的Uint8Array(arrayBuffer);
对于(var i=0,stringLength=string.length;i
因此,您只使用一个整数值覆盖二进制数组
但我不确定这是唯一的问题。为什么要使用Uint8
而不是Uint16
?请参阅Chrome文档中的链接
function stringToArrayBuffer(string) {
var arrayBuffer = new ArrayBuffer(string.length * 2);
var buffer = new Uint8Array(arrayBuffer);
for (var i = 0, stringLength = string.length; i < stringLength; i++) {
buffer[i] = string.charCodeAt(i);
// Was: buffer = string.charCodeAt(i);
}
return buffer;
}