日期:2014-05-19  浏览次数:20830 次

win7 运行socket程序报错
本帖最后由 c493177979 于 2010-12-28 18:15:55 编辑

while(over_time<tryTimes){
if(socket==null || socket.isClosed()){
socket=new Socket(IP,port);
}
setSendString(pkg);
sendData();
long start=System.currentTimeMillis();//开始时间
while(getReturnData().equals("") || getReturnData()=="" || getReturnData()==null)
{
Thread.sleep(threadWaitTime);//线程等待时间
if(!(getReturnData().equals("") || getReturnData()=="" || getReturnData()==null)){
setOperateResult(true);
closeSocket();
over_time=tryTimes;
break;
}
long now=System.currentTimeMillis();//现在时间
if((now-start)>=overtime){
setInfoString("连接超时,服务器无返回!");
setOperateResult(false);
break;
}

}
over_time++;
}




发生异常:
java.net.BindException: Address already in use: NET_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:398)
at java.net.Socket.bind(Socket.java:582)
at java.net.Socket.<init>(Socket.java:392)
at java.net.Socket.<init>(Socket.java:207)
环境tomcat5+ibm1.5jdk,不知道是什么原因,重启机器第一次可以正常连接,第二次连接就出现上述异常。帮忙解决一下啦。谢谢!

------解决方案--------------------
路过、、、、、、、、、、
------解决方案--------------------
这个不是 java 的问题,你在使用一个正在被占用的端口号。

java.net.BindException: Address already in use: NET_Bin


用 cmd 检测一个端口列表。

C:\> netstat -ano 
------解决方案--------------------
 find ":你的端口号"

这个命令返回的结果中包括一个进程号 (pid),用这个 pid 再找找看这个进程是谁。

------解决方案--------------------
也许时win7 安全机制 太高  你试试关闭些 安全机制得东西  如:防火墙 等   或者 拿到 XP系统上试试  
------解决方案--------------------
方法一:查看进程,把重复使用的端口停掉。
方法二:改端口,最好是比较大一点的比如 9999