-1

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

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 毫秒。我怎样才能减少这个时间?因为代码的所有其余部分最多需要 15 毫秒。

计算机之间的 ping 小于 1 毫秒

4

1 回答 1

0

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

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

希望你明白为什么接受函数需要这么多时间(真的不是)。

于 2013-07-12T20:49:12.810 回答