| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 261 人关注过本帖
标题:[求助]急!!Address already in use (Exception)
收藏  订阅  推荐  打印 
rayxar2007
Rank: 1
等级:新手上路
帖子:6
积分:160
注册:2007-4-26
[求助]急!!Address already in use (Exception)

编了开了32个服务器线程, 服务器之间通过某种算法交换数据,每个服务器接受到数据就会开线程处理。 可是我程序运行了2-3分钟就抛出exception了。基本上是说我用完了端口了。用了NETSTAT看了基本好多线程都是TIME-WAIT, 可我明明有关闭socket.

服务器:
public static class ListenServer implements Runnable
{
private ServerSocket ss;
...........
public ListenServer(String pot,String lik)
{
。。。。。


try
{

ss=new ServerSocket(sevport,10);

}
catch(IOException ie)
{
System.out.println("can not listen at "+sevport);
ie.printStackTrace();
}

}
public class DialogServer implements Runnable{
Socket s;
String rev;
DataInputStream in;
public DialogServer(Socket sss){
s=sss;
}
public void run(){
try{rev="";

in=new DataInputStream(s.getInputStream());
rev=in.readUTF();
in.close();

s.close();
tempchk+=rev+"$";
}
catch(IOException ie)
{
ie.printStackTrace();
}
}.........
---------------------------------------------------------------

每个子线程处理数据完了发送给特定服务器用的是:
Socket tt = new Socket("localhost", port);
DataOutputStream outt = new DataOutputStream(tt.getOutputStream());
outt.writeUTF(changemsg);
outt.flush();
outt.close();
tt.close();
不是这样关闭socket的吗? 求大家帮帮忙,很急



搜索更多相关主题的帖子: Exception  already  Address  use  
2007-5-10 21:50
千里冰封
Rank: 12Rank: 12Rank: 12
来自:灌水之王
等级:版主
威望:155
帖子:28360
积分:4616
注册:2006-2-26

在你调用了close 以后,你的socket并不一定关了,而要等到你发的数据让对方收到了,你的socket才关了

但是你可以设定,让你调用close以后,socket立即关闭

用如下方法

Socket tt=new Socket();
tt.setSoLinger(false,0);
InetAddress add=InetAddress.getByName("localhost");
InetSocketAddress socketAddress=new InetSocketAddress(add,port);
tt.connect(socketAddress);
然后获取输入输出流,发完再调用tt.close就可以了,这样就可以保证,你调用了close方法以后,你的socket就关掉了

但是这样会出现一种问题,那就是你发的数据,对方还没有收到的情况下,可能socket已经关闭,数据在传输的过程中就被抛弃了.所以自己要衡量


可惜不是你,陪我到最后
2007-5-11 09:29
rayxar2007
Rank: 1
等级:新手上路
帖子:6
积分:160
注册:2007-4-26

谢谢,我会试试,不过能不能设置windows让他多给点?
2007-5-11 15:17
千里冰封
Rank: 12Rank: 12Rank: 12
来自:灌水之王
等级:版主
威望:155
帖子:28360
积分:4616
注册:2006-2-26

总共只有65536个端口

你想要多少个?


可惜不是你,陪我到最后
2007-5-11 15:19
rayxar2007
Rank: 1
等级:新手上路
帖子:6
积分:160
注册:2007-4-26

我市说我同时的tcp连接可以开多少? 好像每个os都有限制, windows是多少,能不能把那个数字调高, 这样我就不需要改程序就可以支持到结束
2007-5-13 15:20
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.062878 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved