我要做的工作是在java中模拟停止等待的ARQ。初始设置是
ServerSocket
。现在,主要是我基本上要做的事情。
等待1s,但如果在此时间内到达确认时间,则会在等待时间到达下一个循环
List<String> frames = frame.getFrames(Server.getData());
for(int i=0;i<frames.size();++i)
{
String currFrame = frames.get(i);
writer.println(currFrame); // A printwriter for socket
writer.flush();
if(reader.readline()) // for 1 sec
/**
Here is what I want to do. I want to keep reading for input upto 1 sec.
if No input is found after even after 1 sec. Decrement i and go to the
start of the loop
**/
}
这里的问题是,这个读取器是阻塞代码,直到输入可用为止。但我想要的是,如果1秒钟的读卡器没有找到输入,它就会突破循环。我们必须注意到这段代码在一个单独的线程中。
那么,这个问题有什么好的解决方案吗? here是完整的代码。
答案 0 :(得分:1)
你需要setSoTimeut:
ServerSocket socket = new ServerSocket(somePort);
Socket incoming = socket.accept();
incoming.setSoTimeout(1000);