クライアントのポートを固定するーJava版ー
Java でもCと同様の方法でできるようだ。Socket作成後、connect する前に bind しておけばいい。Socket Class に使用可能なメソッドも定義されているし、やり方はCよりイメージしやすい気がする。単にJavaの方に慣れているだけか?
import java.io.*; import java.net.*; public class TCPEchoBindClient { public static void main(String[]args)throws Exception{ System.out.println("Start!"); Socket socket = null; try { socket = new Socket(); socket.bind(new InetSocketAddress("localhost",8888)); socket.connect(new InetSocketAddress("localhost", 80)); for( int i = 0 ; i < 10 ; i++ ){ Thread.sleep(1 * 1000); System.out.print("."); } System.out.println("\nEnd..."); } finally { if( socket != null ) { socket.close(); } } } }
netstat 見るために 10 秒スリープさせているけれども、これは別になくてもいい。何度やってもポート8888と80の接続が ESTABLISHED になっている。