Sockets Chrome实验套接字API:`Chrome.Experimental.Socket.sendTo()`和`recvFrom()`做什么?
本周,我把Chromium的Socket API弄得有点乱。但对于这个糟糕的实验界面,我还不太清楚 谷歌代码上的内容是: 。。。关于当前的Sockets Chrome实验套接字API:`Chrome.Experimental.Socket.sendTo()`和`recvFrom()`做什么?,sockets,google-chrome,tcp,google-chrome-extension,chromium,Sockets,Google Chrome,Tcp,Google Chrome Extension,Chromium,本周,我把Chromium的Socket API弄得有点乱。但对于这个糟糕的实验界面,我还不太清楚 谷歌代码上的内容是: 。。。关于当前的sendTo(): 在给定套接字上写入数据 socketId(整数)socketId 数据(ArrayBuffer)将数据 写 地址(字符串) 远程计算机的地址 端口( 整数)远程计算机的端口 SendToCallback(函数 ) 但是sendTo()的描述与write()的描述完全相同(write-在给定的套接字上写入数据)。关于recvFrom()和re
sendTo()
:
在给定套接字上写入数据
socketId(整数)
socketId数据(ArrayBuffer)
将数据
写地址(字符串)
远程计算机的地址端口(
整数)
远程计算机的端口SendToCallback(函数
)
sendTo()
的描述与write()
的描述完全相同(write
-在给定的套接字上写入数据)。关于recvFrom()
和read()
,这两个函数的描述是一样的-它们都得到了完全相同的描述(read
-从给定的套接字读取数据。/recvFrom
-从给定的套接字读取数据)。但是没有人对差异说任何有趣的话
我发现:
无论我在做什么,sendTo
始终返回以下对象:
- [-]对象
:bytesWrited
-2
- [+]
:对象\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
write
而不是sendTo
,那么一切都会按预期发生
这与recvFrom()
和read()
-read()
按预期工作,而recvFrom()
失败
我的问题:
用于什么,以及sendTo()
和write()
sendTo()
- 什么是
,以及recvFrom()
和read()
之间的区别是什么recvFrom()
- 为什么有这么多类似的方法
- 和:是否有关于套接字API的更多信息?谷歌代码文档非常轻量级。在chromium.org上没有关于这方面的文章吗
谢谢。我对套接字了解不多,但我认为文档是混淆的,当从浏览器启动连接时使用sendTo(或者可能是另一种方式,当客户端启动到浏览器的套接字连接时应该使用另一种方式,但我看不到任何SocketServer支持…无论如何)。从(检查参数):
- write()
- sendTo()
在我给你的链接(experimental_socket.idl)中有其余的文档。对于造成的混淆,我深表歉意。我们正在根据您的问题推出一个新的解决方案
Chrome套接字API是POSIX套接字API子集上的一个薄层。按照惯例,read()/write()用于连接的套接字,sendto()/recvfrom()用于非连接的套接字。冒着过于简化的风险,您可能希望将前者用于面向连接的协议(TCP),将后者用于无连接的协议(UDP)。对于在中选择TCP和UDP的原因有一个很好的比较。我的最佳猜测是
sendTo
用于未参与connect
操作的套接字。如果你不连接套接字,sendTo
是否有效?@apsillers我做了一些试验,只有当我在绑定的UDP套接字上应用了该方法时,sendTo
才有效。我在Google Code或chrome.org
上找不到任何关于这方面的信息,但我认为目前在TCP套接字上没有任何关于sendTo
的用例。谢谢你的回答。到目前为止我尝试过的一切都支持你的假设。因此,我认为目前TCP套接字无法使用recvFrom()
/sendTo()
。谢谢。关于这一点,只有一个问题:为什么TCP方法名与UDP方法名不同?有什么特别的原因吗,或者你只是从POSIX中取了名字?
// Writes data on the given socket.
// |socketId| : The socketId.
// |data| : The data to write.
// |callback| : Called when the first of any of the following happens: the
// write operation completes without blocking, the write operation blocked
// before completion (in which case onEvent() will eventually be called with
// a <code>writeComplete</code> event), or an error occurred.
static void write(long socketId,
ArrayBuffer data,
WriteCallback callback);
// Writes data on the given socket.
// |socketId| : The socketId.
// |data| : The data to write.
// |address| : The address of the remote machine.
// |port| : The port of the remote machine.
// |callback| : Called when the first of any of the following happens: the
// write operation completes without blocking, the write operation blocked
// before completion (in which case onEvent() will eventually be called with
// a <code>writeComplete</code> event), or an error occurred.
static void sendTo(long socketId,
ArrayBuffer data,
DOMString address,
long port,
SendToCallback callback);