我有使用套接字的客户端/服务器程序。 在服务器端我有
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
答案 0 :(得分:0)
关于这个问题的答案是阅读Eng.Fouad的评论。
ServerSocket类中的accept函数一直等到传入的请求到来。
如果您在启动客户端代码之前等了5个小时,接受功能将花费18000000ms!你不能让这个功能更快,它已经尽可能快。
(笑话:你可以通过更快地启动客户端来减少接受功能的时间..):)
希望你理解为什么接受函数花了这么多时间(实际上它不是)。