基于java的socket端口复用问题(TCP)
作为小白的我,想用本机的同一个端口与服务起的不同端口建立两个socket连接。在调用第二个cs2.bind()方法时,提示“Address already in use”地址已被使用,求大神指导。
注:在调用bind()方法之前两个socket都已经设置SO_ReuseAddress 的值为true。
具体代码如下:
Socket cs1, cs2;
InetSocketAddress csadd = null;
InetSocketAddress csadds1 = null;
InetSocketAddress csadds2 = null;
csadd = new InetSocketAddress (InetAddress.getByName("192.168.1.111"),8000); // 本机(客户机)的ip及端口
csadds1 = new InetSocketAddress (InetAddress.getByName("192.168.1.101"),8000); //连接服务器的ip和端口
csadds2 = new InetSocketAddress (InetAddress.getByName("192.168.1.101"),8001); //连接服务器的ip和另个端口
cs1 = new Sokcet(); //实例化Socket对象cs1
cs1.setReuseAddress(true); //设置端口复用为 true
cs1.bind(csadd); //绑定本机的ip和端口,
cs1.connet(csadds1); //连接服务器。程序运行至这正常,但运行到cs2.bind()就提示出错
cs2 = new Sokcet();
cs2.setReuseAddress(true);
cs2.bind(csadd); //运行到这里就提示出错
cs2.connet(csadds1);