1

現在、Socket および ServerSocket クラスを使用してチャット アプリケーションを作成しようとしていますが、ちょっとした障害に遭遇しました。メッセージがサーバーまたはクライアントから受信されたときに、特定のコード ブロックを実行するために何らかのリスナーが必要ですが、リスナーが見つからないようです。もちろん、受信メッセージを 10 ミリ秒ごとにチェックすることもできますが、よりスマートなソリューションはありませんか?

4

2 に答える 2

0

ネティミナがおすすめです。Socket と ServerSocket に関しては、read()呼び出しがブロックされるため、ある意味で、受信データがあるたびに read() の下のコードが実行されます。

ただし、不完全なメッセージには注意してください。ソケットはバイト ストリームを提供し、アプリケーションは通常、個別のメッセージの方が快適だからです。

于 2012-05-23T14:52:34.350 に答える
0

一般に、読み取り中の各ソケットにスレッドを割り当てて、スレッドがソケットでブロックし、着信情報を待機できるようにする必要があります。

DataFetcher をご覧ください: http://tus.svn.sourceforge.net/viewvc/tus/tjacobs/io/

このクラスは非同期で動作し、新しいデータが利用可能になったときに FetcherListener に通知できます

于 2012-05-23T14:42:20.677 に答える