Sockets Chrome实验套接字API:`Chrome.Experimental.Socket.sendTo()`和`recvFrom()`做什么?

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

本周,我把Chromium的Socket API弄得有点乱。但对于这个糟糕的实验界面,我还不太清楚

谷歌代码上的内容是: 。。。关于当前的
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);