問題タブ [gen-tcp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
232 参照

sockets - gen_tcp:recv/2 を使用する代わりに TCP パケットをメッセージとして受信する

私自身の学習/利益のために、Erlang で分散チャット アプリケーションを作成しています。永続的な TCP 接続を維持するクライアントとサーバーがあります。クライアントは、gen_tcp:connect/3 を使用して接続を開始します。サーバーは実際には複数のノードに分散されています。

gen_tcp のドキュメントには次のように書かれています。

send/2 を使用して、返されたソケット Socket にパケットを送信できます。ピアから送信されたパケットは、メッセージとして配信されます。

{tcp、ソケット、データ}

このため、私のクライアントは、サーバーが通常の Erlang メッセージとして送信するデータを受信できます。これは私のアプリケーションにとって望ましいものです。

問題は、サーバー上の接続を同じように動作させる方法が見当たらないことです。サーバーが送信されたデータを Erlang メッセージとして受信できるようになれば幸いです。このようにして、クライアントがメッセージを送信するのを待っている間に、サーバーはデータを送信できます (つまり、チャット ルームの別の人がメッセージを送信した場合)。

この動作を実装する方法はありますか?

編集: 私は prim_inet:async_accept/2 を認識していますが、可能であれば文書化されたアプローチを希望します。

0 投票する
1 に答える
661 参照

sockets - Erlang で大きなメッセージを gen_tcp サーバーに送信する

クライアントサーバープログラムを実装しようとしています。サーバーは、次のコードを使用してリッスン ソケットをセットアップします。

gen_tcp:listen(ポート、[バイナリ、{アクティブ、真}])

問題は、クライアントが大きなメッセージ (タプルのリスト) をサーバーに送信すると、サーバーが代わりにいくつかのメッセージを受信することです。TCP が長いメッセージをいくつかのメッセージに分割しているようです。

長いメッセージ全体を一度に取得するにはどうすればよいでしょうか?

0 投票する
1 に答える
245 参照

tcp - TCP サーバーが応答していません

gen_tcp OTP モジュールを使用して、Elixir で次の TCP サーバーを作成しました。

telnet を使用してサーバーに接続するとすぐに切断されます。何が起こっているかについて何か考えはありますか?