Java 7とNIO 2を使用して非同期サーバーを作成したいと考えています。AsynchronousServerSocketChannelを使用して接続を受け入れる方法を教えてください。
AsynchronousServerSocketChannel
はどうすればよいですか?
など。私はで始まる場合:私はserver.accept()
を行うときに呼び出しが非同期あるので
final AsynchronousServerSocketChannel server =
AsynchronousServerSocketChannel.open().bind(
new InetSocketAddress(port));
はその後、プログラムはを終了します。そしてそのコードを無限ループに入れると、AcceptPendingException
がスローされます。
AsynchronousServerSocketChannel
を使用して単純な非同期サーバーを作成する方法に関する提案はありますか?ここで
は、(JavaDocの例と同様に)私の完全な例です:
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.AsynchronousServerSocketChannel;
import java.nio.channels.AsynchronousSocketChannel;
import java.nio.channels.CompletionHandler;
public class AsyncServer {
public static void main(String[] args) {
int port = 8060;
try {
final AsynchronousServerSocketChannel server =
AsynchronousServerSocketChannel.open().bind(
new InetSocketAddress(port));
System.out.println("Server listening on " + port);
server.accept("Client connection",
new CompletionHandler<AsynchronousSocketChannel, Object>() {
public void completed(AsynchronousSocketChannel ch, Object att) {
System.out.println("Accepted a connection");
// accept the next connection
server.accept("Client connection", this);
// handle this connection
//TODO handle(ch);
}
public void failed(Throwable exc, Object att) {
System.out.println("Failed to accept connection");
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
をカウントダウン。また、Java NIOも使用します。それはサーバーの簡単で迅速な開発です。 –
@Optimus:私はネチェットについて知っていますが、それはこの質問には関係ありません。 – Jonas