問題タブ [sockets]
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.
sockets - リアルタイムマルチプレイヤーゲームの実装にはどのような問題がありますか
ソケットを使用してマルチプレイヤーターン制ゲームを作成した経験はありますが、リアルタイム アクション ゲームを試みたことはありません。どのような追加の問題に対処する必要がありますか? 遅れたプレーヤーが過去に何かをした場合に備えて、プレーヤーのアクションの履歴を保持する必要がありますか? 本当に UDP パケットを使用する必要がありますか? それとも TCP で十分ですか? ほかに何か?
何を作るかはまだ決めていませんが、この質問の目的のために、XY 移動を伴う 10 人用の 2D ゲームを考えることができます。
c# - C# クライアントから Java サーバーへの 4 バイトのメッセージ ヘッダーの送信
Java で記述されたサーバーに C# クライアントを記述しようとしています。サーバーは、4 バイト (Java では DataInputStread readInt()) のメッセージ ヘッダーとそれに続く実際のメッセージを想定しています。
私は C# をまったく初めて使用します。このメッセージ ヘッダーを Java サーバーに送信するにはどうすればよいですか? いくつかの方法で試してみましたが (ほとんどは C# 言語に深く入り込まずに試行錯誤しました)、何も機能しませんでした。Java 側で、誤った (非常に長い) メッセージ長が発生しました。
python - Python ソケットが突然タイムアウトしますか?
今日、SSL 経由で Gmail にログインするために持っていた古いスクリプトに戻ってきました。スクリプトは、前回 (数か月前) 実行したときは正常に機能しましたが、今では次のようにすぐに終了します。
タイムアウトを設定すると(どれだけ長くても)、次のようにすぐに終了します。
後者は次の方法で再現できます。
戻る:
しかし、前者を再現できないようで、コードを何度も調べた後、何が原因なのかわかりません。
java - Java で URLConnection に基づいて BufferedReader に対してタイムアウトを設定するにはどうすればよいですか?
URL のコンテンツを読み取りたいが、URL が応答しない場合に「ハング」したくありません。URLを使用してBufferedReaderを作成しました...
...そして、コンテンツを読み取るループを開始しました...
...しかし、読み取りがハングすると、アプリケーションがハングします。
必要に応じて読み取りを「タイムアウト」する方法はありますか?
unix - AF_UNIX ローカル データグラム ソケットの自動命名?
unix ローカル ソケット (AF_UNIX アドレス ファミリ、つまりUDP ではない) を介してデータグラムを使用する単純なサービスを実装しています。サーバーはパブリックアドレスにバインドされており、リクエストを問題なく受け取ります。残念ながら、応答に関してはsendto
、クライアントもバインドされていない限り失敗します。(一般的なエラーは ですTransport endpoint is not connected
)。
ランダムな名前 (ファイルシステムベースまたは抽象) へのバインドは機能します。しかし、私はそれを避けたいと思います.私が選んだ名前が衝突しないことを保証するのは誰ですか?
connect
Unix ソケットのストリーム モードのドキュメントによると、抽象名がまだない場合は、その時点で抽象名が割り当てられるとのことです。そのような機能はデータグラム指向のソケットで利用できますか?
linux - ping、ssh などの Unix コマンドは正常に動作するが、ソケットベースのプログラムは接続に失敗する
テスターから、ソフトウェアに問題のあるマシンについて電話がありました。問題のマシンを調べたところ、問題がかなり低いレベルのものであることがすぐにわかりました。インバウンド ネットワーク トラフィックは正常に機能しています。ping や ssh などの基本的な送信コマンドは正常に機能していますが、connect()
呼び出しに関連するものはすべて「ホストへのルートがありません」で失敗しています。
たとえば、この特定のマシンconnect()
では、このプログラムは次の IP アドレス以外のステートメントで失敗し127.0.0.1
ます。
このマシンのどこが壊れているかについて何か提案はありますか? SUSE-10.2 を実行しています。
sockets - 時間をミリ秒の精度とマシン間の精度に同期させるための最良の方法は何ですか?
私が理解していることから、PCの水晶はクロックスキューで有名です。クロックが常に歪んでいる場合、ミリ秒の精度と精度でマシン間でクロックを同期するための最良の方法は何ですか?私が見つけたものから、NTPとPTPは可能な解決策ですが、stackoverflow.comで誰かが経験を持っているかどうか疑問に思いました!
NTPが一般的な選択肢であることは理解していますが、PTP(IEEE1588)の経験がある人はいないかと思います。
java - (Java で) localhost からの接続のみをソケットに受け入れるにはどうすればよいですか?
ServerSocket で接続をリッスンする Java アプリ (アプリケーション コンテナーで実行されていない) があります。localhost からの接続のみを受け入れるようにしたいと思います。現在、接続が受け入れられた後、ピア IP をチェックし、ループバック アドレスでない場合は拒否しますが、ピア IP アドレスがスプーフィングされる可能性があることはわかっています。したがって、可能であれば、ループバック インターフェイスのみをリッスンするソケットにバインドすることをお勧めします。これは可能ですか?
bind() を呼び出すときに "127.0.0.1" をローカル アドレスとして指定するなど、いくつかの方法を試しましたが、うまくいきませんでした。前もって感謝します。
ご協力ありがとうございました。これがすべて私の間違いだったことを認めるのは恥ずかしい. 私たちのアプリケーションは 2 つの異なるポートでリッスンします。一方をループバック インターフェイスにバインドし、もう一方をテストしていました。実際に正しいポートに telnet で接続しようとすると、すべて正常に動作します (つまり、"127.0.0.1" へのバインドは想定どおりに動作します)。
ループバック アドレスのスプーフィングについては、その通りです。それを第一の関心事のように聞こえるようにするべきではありませんでした。実際、望ましい動作はローカル接続のみを取得することであり、ローカル インターフェイスのみにバインドすることは、すべての接続を受け入れてから非ローカル接続を閉じるよりも直接的な方法です。
sockets - 1Gbit UDP スループットの達成に問題がある
ペイロードが 1470 未満の UDP パケットの場合、1Gbit のスループットを達成できますか? パケット サイズが小さいため、このようなスループットを達成するにはいくつかのボトルネックが存在するはずです (I/O、OS、ネットワークなど)。ドライバーとハードウェアは、小さなパケット/高スループットに合わせて調整する必要があると思います。小さなUDPパケットで1Gbitのスループットを達成しようとした人はいますか?
c# - スケーラブルなソケット イベント キューの処理
私の C# クラスは、tcp ストリーム スタイルのソケット接続を介して受信した大量のイベントを処理できる必要があります。クラスのソケットが tcp サーバーから受信するイベント メッセージの量は完全に可変です。たとえば、10 秒間に 1 つのイベント メッセージしか受信しない場合もあれば、1 秒間に 60 のイベント メッセージを受信する場合もあります。
メッセージを受信するために Socket.ReceiveAsync を使用しています。ReceiveAsync は、受信操作が保留中の場合は true を返し、ネットワーク上に既にデータがあり、受信操作が同期的に完了した場合は false を返します。操作が保留中の場合、Socket は IO 完了スレッドでコールバックを呼び出します。それ以外の場合は、現在の (IOC) スレッドで独自のコールバックを呼び出します。さらに、イベント メッセージに混じって、この tcp サーバーに送信されたコマンドに対する応答も受け取ります。応答メッセージはすぐに処理されます。スレッドプールワーカーを起動することにより、個別に。
ただし、「十分な」(N) 個のイベント メッセージをキューに入れるか、ネットワーク上になくなるまで、スレッドプール ワーカーを起動して、イベント メッセージのバッチを処理したいと考えています。また、すべてのイベントを順番に処理したいので、一度に 1 つのスレッドプール ワーカーだけが処理されるようにします。
イベント メッセージのプロセッサは、メッセージ バッファをオブジェクトにコピーし、イベントを発生させてから、メッセージ バッファを解放してリング バッファ プールに戻すだけで済みます。私の質問は...これを達成するための最良の戦略は何だと思いますか?
さらに情報が必要ですか? お知らせ下さい。ありがとう!!