私はこのコードの使用を誤解するかもしれませんが、私が理解しているところでは、setReuseAddress(true)を呼び出すと、コンピュータがまだ使用中であると考えても使用できるようになります。setReuseAddress(true)でもバインドエラー
シナリオ:以下のコードがあります。クラッシュするとポートを閉じないため、次回の起動時にバインドエラーが発生します。 setReuseAddress(true)を使用してポートを強制的に開こうとしましたが、同じエラーがスローされます。これが正しいコードなら、どうすれば使用できますか?それが間違ったコードなら、何がこの動作を可能にしますか?
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class ServerPsswd {
public static void main(String[] args) throws IOException {
ServerSocket listener = new ServerSocket();
listener.setReuseAddress(true);
listener.bind(new InetSocketAddress(9090));
try {
while (true) {
Socket socket = listener.accept();
try {
PrintWriter out =
new PrintWriter(socket.getOutputStream(), true);
out.println("tada!");
out.println("yays");
} finally {
socket.close();
}
}
}
finally {
listener.close();
}
}
}
ああを閉じた後、タイムアウト期間中に接続を許可することで、問題は、実際に、私はそれの2つのインスタンス知らず知らずのうち – Blaine