問題タブ [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.
erlang - Erlangのメッセージがありません
私は次のコードを実行していますdbg:p(client, r)
:
これに続いて、gen_tcpとgen_serverで作成したサーバーと通信します。私の主な問題は、すべてのメッセージを確実に受信できないことです。時々私は得るでしょう
デバッグ出力からですが、対応するReceived TCP message on #Port<0.517>:...
メッセージはありません。次のようなものも表示されます。
しかし、からは何もnet_client
受け取りません。私はwiresharkでネットワークトラフィックを監視しましたが、パケットが本来の場所に到達し、ACK
編集されていることを知っています。私は何が間違っているのですか?
編集:erl -smp enable -eval "client:start()."
それが重要な場合に備えて、私はこれを呼び出しています。
erlang - gen_tcp スマッシュ メッセージ
このチュートリアルのsocket_serverと、クライアントとサーバー用の次のコードを使用しています。
サーバ:
クライアント:
同じシステム上の異なるシェルから、この順序で呼び出しecho_server:start()
ています。echo_client:start()
ここに私が見るものがあります:
サーバーは問題なく動作しているようです。
クライアントは、すべてのメッセージを正しく理解していません。
のネットワーク トラフィックを見ると、lo
各数値のカウント ダウンに対してきれいな PSH/ACK ペアが表示されます。上で指摘した行は、1 つのメッセージに 2 つのパケット 7 と 6 が表示されていることを示しています。これらは 2 つの別個の TCP パケットとしてネットワークを通過しました。なぜそれらが一緒に押しつぶされているのか、またはそれらを元に戻す方法を知っている人はいますか?
erlang - Erlang: 閉じた接続での送信
クライアントが通常の tcp 接続を介してサーバーに接続し、後でクライアントの接続が切断された場合、サーバーは (アクティブ モードと仮定して) {tcp_closed,Socket} を取得します。しかし、電源障害やクラッシュなど、クライアントが切断されたことをサーバーが認識しない場合があります (私は間違っている可能性があると思います)。このような場合、クライアントはなくなりましたが、サーバーはまだ接続されていると認識しています。このような場合にサーバーがクライアントにメッセージを送信しようとすると、クライアントがメッセージを受信したと見なされますか、それとも tcp スタックがそれを低レベルで分類し、サーバーは何らかのエラーを返しますか?
これは単純な質問であることはわかっていますが、必要なようにクライアントを壊滅的に失敗させることができないため、自分でテストするのに苦労しています( kill -9 でも実行していません)。誰もこれについて経験がありますか?
ssl - 簡単な ssl erlang の例を探しています
本Erlang Programmingで提案された演習の 1 つは、ブラウザからのリクエストを を使用して画面に出力することでしたgen_tcp
。次のようにhttpリクエスト用に作成しました:
httpsリクエストの場合、これをどのように行うことができるのか疑問に思っています。非常に簡単な例を挙げていただけますか、それとも書籍やオンラインのリソースを教えていただけますか?
erlang - gen_serverがリスニングソケットを閉じます
私がやろうとしているのは、gen_serverプロセスに新しいクライアントを受け入れさせ、すぐに新しい子を生成して次のクライアントを処理させることです。私が見ている問題は、ソケットが終了して結果的に終了すると、リスニングソケットも閉じて、参照しなくなっても理由がわからないことです。
私が間違っていることについて何か考えはありますか?
gen_server:
スーパーバイザー:
java - gen_tcp:send を使用するメッセージは、ソケットが閉じられるまで送信されません
メッセージをサーバーに送信し、応答を受信する単純なクライアントを作成したいと考えています。接続されているすべてのクライアントに同じメッセージをブロードキャストするサーバーがあり、telnet でテストしているときに動作します。Erlang シェルを使用して実行しようとすると、ソケットを閉じるまで gen_tcp:send はメッセージを送信しません。
これは私がやろうとしていることです:
Telnet クライアントを見ると、ソケットを閉じるとメッセージが送信されることがわかります。
Erlang バージョン:R14B01 (erts-5.8.2)
アップデート
hdima はコメントし、サーバーがストリームからメッセージを抽出する方法が間違っている可能性があると述べました。これは、クライアントが期待どおりに動作するように見える独自のサーバーを作成しようとした場合の原因のようです。サーバーのソースコードを取得してみます。サーバーはところで Java で書かれています。
erlang - Erlang gen_tcp:listen/2 for IPv6
Erlangレシーバーに送信する.NET TCP Senderがあります。.NET コンポーネントは::1
、解決時に IPv6 アドレスを使用することを好みますlocalhost
。Erlang に gen_tcp を使用して IPv6 アドレスをリッスンさせる方法がよくわかりません。これが私の試みです。リスニングを行うように間違ったソケットに指示していますか? ありがとう!
binary - Erlang gen_tcp:バイナリを送信するとマージされますか?
重複の可能性:
gen_tcp smushed メッセージ
バイナリデータを送信するとgen_tcp:send
、受信トレイにマージされ、例として受信されることがあり<<0,1>>
ます。どうすればこれを修正できますか? 返信ありがとうございます。<<1,0>>
<<0,1,1,0>>
erlang - erlang emsgsizeとは何ですか?
私たちの学校のプロジェクトはBitTorrentクライアントです。今日、突然{tcp_error,#Port<0.2095>,emsgsize}
エラーが発生しました。私の質問は、このエラーの原因は何ですか?私は持っoption {packet,4}
ているgen_tcp
ので、パッケージからの長さが最初の4バイトと一致しないと思いますか?ハンドシェイクを除くすべてのBitTorrentメッセージの最初の4バイトがlenであるため、これは本当に奇妙なことです。昨日ダウンロードできましたが、今はこれらのメッセージが表示されます。一部のメッセージは問題なく到着することに注意してください。問題についてお考えいただきありがとうございます。
erlang - erlang gen_tcp 送信の問題
手伝っていただけませんか?gen_tcp send 関数に関連する問題があります。私は、amf オブジェクトにデコードされた約 10 ~ 15 個のアイテムのいくつかのタプルを、erlang サーバーからフラッシュ クライアントに送信しようとしました。
エラーはありませんが、フラッシュ クライアントは約 8 ~ 11 項目のデータ全体を受信しません。ソケットのオプションは [binary, {active, true}, {reuseaddr, true}] です。クライアントを使用しているネットワークを確認しました。送信されたパケットは、大小の 2 つのフラグメントにフラグメント化されていました。大きなものはパケットの最初のフラグメントで、小さなものは次のフラグメントです。ビッグの量は送信されたメッセージの量と同じですが、スモールははるかに少なく、フラッシュ クライアントによって受信されたメッセージの数とほぼ同じです。
データを高速で送信した場合にのみ再現しますが、ゆっくりと送信すると問題ないようです。なぜそれが起こるのか誰か知っていますか?とても役に立ちます。