(1)使用netstat命令查看当前正在被使用的TCP端口号。
(2)通过一个 配置参数 来指定TCP服务程序所用的端口号。
运行时 java ReverseServer 8002 传入args参数指定端口号。
上面的服务器程序:http://blog.csdn.net/itm_hadf/article/details/7526260
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; /*** * * (1)编译。 * (2) 运行,并输入:IP地址 和 所监听的端口号。 * (3) 输入 字符。 * (4) 查看 服务器端 是否收到??? * */ public class TcpClient { /** * @param args */ public static void main(String[] args) { if(args.length < 2){ System.out.println("Usage: java TcpClient ServerIp ServerPort"); return; } try { Socket s = new Socket(args[0],Integer.parseInt(args[1])); InputStream ips = s.getInputStream(); OutputStream ops = s.getOutputStream(); BufferedReader brNet = new BufferedReader(new InputStreamReader(ips)); PrintWriter pw = new PrintWriter(ops,true); // 读取 键盘 信息。 BufferedReader brKeyBoard = new BufferedReader(new InputStreamReader(System.in)); while(true){ String strWord = brKeyBoard.readLine(); // 将读取到的内容 写到客户端。 pw.println(strWord); if(strWord.equalsIgnoreCase("quit")){ break; } // 读取服务器端 回执过来的信息。 System.out.println(brNet.readLine()); } pw.close(); brNet.close(); brKeyBoard.close(); s.close(); } catch (NumberFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
(3)将用户所指定的端口号保存到一个文件中,当服务器程序下次启动运行时,直接从文件中读取那个端口。
(4)编写一个连接服务器的IP地址和端口号不固定在程序代码中,通过程序运行时的运行时参数来指定
提供较好的灵活性和较高的通用性
if(args.length < 2){
return;
}
Socket s = new Socket(args[0], Integer.parseInt(args[1]));