タグ付けされた質問 「network-programming」

ネットワークの作成と管理、およびプログラム(のセット)へのネットワーク接続の追加に関連するプログラミング。

3
UNIXノンブロッキングI / O:O_NONBLOCKとFIONBIO
私がBSDソケットプログラミングのコンテキストで遭遇するすべての例と議論では、ファイル記述子をノンブロッキングI / Oモードに設定するための推奨される方法は、O_NONBLOCKフラグをfcntl()に使用することです。 int flags = fcntl(fd, F_GETFL, 0); fcntl(fd, F_SETFL, flags | O_NONBLOCK); 私はUNIXで10年以上ネットワークプログラミングを行っており、FIONBIO ioctl()これを行うために常に呼び出しを使用しています。 int opt = 1; ioctl(fd, FIONBIO, &opt); その理由をあまり考えなかった。ちょうどそのようにそれを学びました。 誰かがどちらか一方の可能性のあるそれぞれの利点について解説をしていますか?移植性の軌跡は多少異なると思いますがioctl_list(2)、個々のioctlメソッドのその側面に触れていないので、どの程度かはわかりません。

13
信頼できるUDPが必要な場合、何を使用しますか?
TCP接続が遅すぎる可能性があり、UDP「接続」が信頼性が高すぎる可能性がある状況がある場合、何を使用しますか?さまざまな標準の信頼できるUDPプロトコルが世の中にありますが、それらについてどのような経験がありますか? 返信ごとに1つのプロトコルについて話し合い、使用しているプロトコルについて他の誰かがすでに言及している場合は、それらを投票し、必要に応じてコメントを使用して詳しく説明することを検討してください。 ここでさまざまなオプションに興味があります。TCPはスケールの一端にあり、UDPはもう一方の端にあります。さまざまな信頼できるUDPオプションが利用可能であり、それぞれがTCPのいくつかの要素をUDPにもたらします。 多くの場合、TCPが正しい選択ですが、代替案のリストを用意しておくと、その結論に到達するのに役立ちます。UDPに基づいて構築されたEnetやRUDPなどには、さまざまな長所と短所があります。それらを使用したことはありますか、あなたの経験は何ですか? 疑いを避けるために、これ以上の情報はありません。これは架空の質問であり、決定を下す必要がある人が利用できるさまざまなオプションと代替案を詳述した回答のリストを引き出したいと思います。

12
I / Oを試行せずに、ピアがTCPソケットを正常に閉じたことを検出できないのはなぜですか?
最近の質問のフォローアップとして、TCPソケットの読み取り/書き込みを試みない限り、ソケットがピアによって正常に閉じられていることを検出することがJavaで不可能である理由は何ですか?これは、かどうかに関係なく1回の使用前NIOの場合であるように思わSocketまたはNIO SocketChannel。 ピアがTCP接続を適切に閉じると、接続の両側のTCPスタックはその事実を認識します。サーバー側(シャットダウンを開始する側)は状態FIN_WAIT2になり、クライアント側(シャットダウンに明示的に応答しない側)は状態になりCLOSE_WAITます。なぜそこに方法はないSocketかSocketChannelという、基礎となるTCP接続が終了したかどうかを確認するためにTCPスタックを照会することができますか?TCPスタックがそのようなステータス情報を提供しないのですか?それとも、コストのかかるカーネルの呼び出しを回避するという設計上の決定でしょうか。 この質問に対するいくつかの回答を既に投稿したユーザーの助けを借りて、問題の原因がどこにあるのかがわかります。接続を明示的に閉じない側はTCP状態になりCLOSE_WAIT、接続はシャットダウンの処理中であり、側が独自のCLOSE操作を発行するのを待ちます。私はisConnected戻っtrueてisClosed戻ってくるのは十分に公正だと思いますfalseが、なぜそんなものがないのisClosingですか? 以下は、NIO以前のソケットを使用するテストクラスです。しかし、NIOを使用しても同じ結果が得られます。 import java.net.ServerSocket; import java.net.Socket; public class MyServer { public static void main(String[] args) throws Exception { final ServerSocket ss = new ServerSocket(12345); final Socket cs = ss.accept(); System.out.println("Accepted connection"); Thread.sleep(5000); cs.close(); System.out.println("Closed connection"); ss.close(); Thread.sleep(100000); } } import java.net.Socket; public class MyClient { public static …

8
PHPでの非同期関数呼び出し
私はPHPWebアプリケーションに取り組んでおり、ユーザーの要求に基づいてリモートサーバーから誰かをフェッチするなど、要求でいくつかのネットワーク操作を実行する必要があります。 関数にデータを渡す必要があり、関数からの出力も必要な場合、PHPで非同期動作をシミュレートすることは可能ですか? 私のコードは次のようなものです: <?php $data1 = processGETandPOST(); $data2 = processGETandPOST(); $data3 = processGETandPOST(); $response1 = makeNetworkCall($data1); $response2 = makeNetworkCall($data2); $response3 = makeNetworkCall($data3); processNetworkResponse($response1); processNetworkResponse($response2); processNetworkResponse($response3); /*HTML and OTHER UI STUFF HERE*/ exit; ?> 3つのリクエストを行うと、各ネットワーク操作が完了するまでに約5秒かかり、アプリケーションの応答時間に合計15秒が追加されます。 makeNetworkCall()関数は、HTTPPOSTリクエストを実行するだけです。 リモートサーバーはサードパーティのAPIであるため、制御することはできません。 PS:AJAXやその他のことについての提案には答えないでください。私は現在、PHPを介してこれを実行できるかどうかを探しています。C++拡張機能などを使用している可能性があります。

12
Javaで「外部」IPアドレスを取得する
ネットワーク外のコンピュータが見るように、マシンの外部IPアドレスを取得する方法がよくわかりません。 次のIPAddressクラスは、マシンのローカルIPアドレスのみを取得します。 public class IPAddress { private InetAddress thisIp; private String thisIpAddress; private void setIpAdd() { try { InetAddress thisIp = InetAddress.getLocalHost(); thisIpAddress = thisIp.getHostAddress().toString(); } catch (Exception e) { } } protected String getIpAddress() { setIpAdd(); return thisIpAddress; } }

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.