如何减少java中的套接字连接时间?

时间:2013-07-12 19:52:48

标签: java sockets time connection

我有使用套接字的客户端/服务器程序。 在服务器端我有

ServerSocket s=new ServerSocket(8888);
s.setSoTimeout(10000);
Socket incoming=s.accept(); 
ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream());
ObjectInputStream ios = new ObjectInputStream(s.getInputStream());
s.close();
oos.close();
ios.close();
incoming.close();

在客户端我有

Socket s=new Socket("172.17.20.47", 8888);      
ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream());
ObjectInputStream ios = new ObjectInputStream(s.getInputStream());
s.close();
oos.close();
ios.close();

当我测量时间时:

long start= System.CurrentTimeMillis();    
Socket incoming=s.accept();
long end= System.CurrentTimeMillis();
System.out.println(end-start);

我表明Socket incoming=s.accept();需要约450毫秒。 我怎样才能减少这个时间?因为代码的所有其余部分需要大约15ms。

计算机之间的ping是< 1ms

1 个答案:

答案 0 :(得分:0)

关于这个问题的答案是阅读Eng.Fouad的评论。 ServerSocket类中的accept函数一直等到传入的请求到来。 如果您在启动客户端代码之前等了5个小时,接受功能将花费18000000ms!你不能让这个功能更快,它已经尽可能快。

(笑话:你可以通过更快地启动客户端来减少接受功能的时间..):)

希望你理解为什么接受函数花了这么多时间(实际上它不是)。