1

本周,我稍微弄乱了 Chromium 的 Socket API。但是对于这个记录不良的实验界面,我并不是很清楚。

Google Code 上的文档是怎么说的:

......关于sendTo()此刻:

在给定的套接字上写入数据。

  1. socketId ( integer )套接字标识符。

  2. data ( ArrayBuffer )要写入的数据。

  3. address ( string ) 远程机器的地址。

  4. port ( integer )远程机器的端口。

  5. SendToCallback ( function )

但是 的描述与( - Writes data on the given socket. )sendTo()的描述完全相同。和- 两者的描述完全相同(- 从给定套接字读取数据。/ - 从给定套接字读取数据。)。但是没有人对这些差异说任何有趣的事情。write()writerecvFrom()read()readrecvFrom

我发现了什么:

不管我在做什么,sendTo总是返回以下对象:

  • [-] 对象
    • bytesWritten-2
    • [+] __proto__ :对象

如果我在所有这些情况下都使用write而不是sendTo,一切都会按预期发生。

recvFrom()read()-相同,read()按预期工作但recvFrom()失败。

我的问题:

  • 和和有什么sendTo()区别?write()sendTo()
  • 和和有什么recvFrom()区别?read()recvFrom()
  • 为什么有这么多类似的方法?
  • 并且:还有关于 Socket API 的更多信息吗?Google 代码文档非常轻量级。没有chromium.org相关的文章吗?

谢谢。

4

2 回答 2

2

为混乱道歉。我们正在根据您的问题对文档进行改进。

Chrome 套接字 API 是 POSIX 套接字 API 子集之上的一个薄层。它遵循 read()/write() 用于连接的套接字,而 sendto()/recvfrom() 用于未连接的套接字的约定。冒着过度简化的风险,您可能希望将前者用于面向连接的协议 (TCP),而将后者用于无连接协议 (UDP)。在关于 UDP 的 Wikipedia 文章中,对为什么选择 TCP 与 UDP 进行了很好的比较。

于 2012-07-23T17:01:59.053 回答
1

我对套接字知之甚少,但我认为文档混淆了,当从浏览器启动连接时使用 sendTo (或者可能反过来,当客户端启动套接字时应该使用另一个)连接到浏览器,但我在任何地方都看不到任何 SocketServer 支持,所以......无论如何)。从源代码(查看参数):

  • 写()

      // 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);
    

您可以在我给您的链接(experimental_socket.idl)中找到其余的文档。

于 2012-07-20T01:29:07.640 回答