| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 796 人关注过本帖
标题:[求助]急!!Address already in use (Exception)
只看楼主 加入收藏
rayxar2007
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-4-26
收藏
 问题点数:0 回复次数:4 
[求助]急!!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-05-10 21:50
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

在你调用了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-05-11 09:29
rayxar2007
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-4-26
收藏
得分:0 
谢谢,我会试试,不过能不能设置windows让他多给点?
2007-05-11 15:17
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

总共只有65536个端口

你想要多少个?


可惜不是你,陪我到最后
2007-05-11 15:19
rayxar2007
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-4-26
收藏
得分:0 
我市说我同时的tcp连接可以开多少? 好像每个os都有限制, windows是多少,能不能把那个数字调高, 这样我就不需要改程序就可以支持到结束
2007-05-13 15:20
快速回复:[求助]急!!Address already in use (Exception)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026601 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved