1

今週は、Chromium の Socket API を少しいじりました。しかし、この悪い文書化された実験的インターフェースについて、私にははっきりしないことがあります。

Google Codeのドキュメントの内容:

...sendTo()現時点では:

指定されたソケットにデータを書き込みます。

  1. socketId ( integer )ソケット ID。

  2. data ( ArrayBuffer )書き込むデータ。

  3. address ( string ) リモート マシンのアドレス。

  4. port ( integer )リモート マシンのポート。

  5. SendToCallback ( function )

ただし、の説明は( - Writes data on the given socket. )sendTo()の説明とまったく同じです。については同じです-どちらもまったく同じ説明を持っています ( - Reads data from the given socket. / - Reads data from the given socket. )。しかし、その違いについて興味深いことを言う人は誰もいません。write()writerecvFrom()read()readrecvFrom

私が見つけたもの:

私が何をしているかは関係ありません。sendTo常に次のオブジェクトを返します。

  • [-] オブジェクト
    • bytesWritten:-2
    • [+] __proto__ :オブジェクト

これらすべての状況でwrite代わりに使用すると、すべてが期待どおりに行われます。sendTo

recvFrom()and read()-も同じread()ですが、期待どおりに機能し、recvFrom()失敗します。

私の質問:

  • とはどうsendTo()違いますか?write()sendTo()
  • とはどうrecvFrom()違いますか?read()recvFrom()
  • 似たような方法がたくさんあるのはなぜですか?
  • そして:ソケット APIに関する詳細情報はありますか? Google Code ドキュメントは非常に軽量です。それに関する記事はありませんchromium.orgか?

ありがとう。

4

2 に答える 2

2

混乱をお詫び申し上げます。あなたの質問に基づいて、ドキュメントの改善を展開しています。

Chrome ソケット API は、POSIX ソケット API のサブセット上の薄いレイヤーです。read()/write() は接続されたソケット用であり、sendto()/recvfrom() は接続されていないソケット用であるという規則に従います。単純化しすぎるリスクがありますが、コネクテッド指向プロトコル (TCP) には前者を使用し、コネクションレス プロトコル (UDP) には後者を使用することをお勧めします。ウィキペディアの記事 on UDP には、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 に答える