-3

私はJavaが初めてで、データグラムソケットを使用してクライアントとサーバー間でパケットを送受信するプログラムを作成しようとしています。問題は、カーソルがreceive()行に到着すると、パケットが到着するまでそこにとどまることです。この間、相手にデータを送信するにはどうすればよいですか? つまり、データグラム ソケットを使用して送受信を同時に行うにはどうすればよいでしょうか。

4

2 に答える 2

4

スレッド(または NIO/netty ですが、それははるかに高度です) が必要です。

基本的にIOをブロックすると(名前が示すように)、一度に処理できない場合、すべての読み取り/書き込み操作で現在のスレッドがブロックされます。したがって、書き込みを処理するために 2 番目のスレッドが必要です。すべての優れた Java ソケット チュートリアルには、マルチスレッド サーバーの例が含まれています。

于 2012-11-12T18:40:26.720 に答える
-1

非同期 I/O について言及しているようですが、実際にはスレッドとソケットを使用して実現されますが (前に述べたように)、NIO を使用するのが最適です: http://en.wikipedia.org/wiki/New_I/O

拡張性に優れ、イベント ベースであるため、IO やネットワークの経験があまりないと仮定すると、マルチスレッドよりもはるかに理解しやすい概念です。また、Apache MINA ( http://mina.apache.org/ ) を使用することで、複雑さの一部を回避できます。

于 2012-11-12T18:52:47.293 に答える