java 网络编程【7】 如何检测和解决端口冲突问题?

(1)使用netstat命令查看当前正在被使用的TCP端口号。

(2)通过一个 配置参数 来指定TCP服务程序所用的端口号。


if(args.length <1){ ss = new ServerSocket(8001); }else{ ss = enw ServerSocket(Integer.parseInt(args[0])); }

运行时 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]));


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值