我编写了一个简单的TCP Server程序,它从客户端接收数据。我的main()方法如下所示:
Acceptor acceptor = Acceptor.open(new InetSocketAddress(port));
Session session = acceptor.accept(); //accepts connection from client and returns session object
FIXSession transport = session.getTransport();
String str = transport.receive(); // receives data from client
doWork(str); // do the remaining process.
在上面的代码中,我试图使用“transport.receive()”方法从客户端接收数据。如果假设客户端需要一些时间来发送数据,同时我的主程序将进入下一步“doWork(str);”结果为null。如何让main()线程等到我从客户端接收数据。将来我可以在其他线程中运行doWork(str)方法。所以我需要让doWork(str)线程等到我从客户端获取数据。有什么办法吗?
答案 0 :(得分:0)
引用OP:
即使它返回字节数,如果接收的字节数小于0,那么它必须等到接收的字节大于0
所以,将此转变为阻止通话的直接方式是:
int numBytes = transport.receive();
while (numBytes == 0) {
Thread.sleep(SOME_TIME);
numBytes = transport.receive();
}
例如,。如果你想要代码等待;然后编写等待的代码。但是,当然,仍然没有回答如何实际接收消息。因为您需要MessageListener
来实际接收消息。