我需要编写一个带有机器 P0、P1 的程序,使得任何一台机器都可以先启动并需要联系其他机器。假设 P1 启动,然后它需要不断尝试联系 P0,直到得到 P0 的确认。我如何使用 Java 中的套接字编程来做到这一点。
如果引发异常,表明 P0 未运行,那么它仍然需要继续尝试,而不是为此抛出异常。或者即使它抛出异常,我怎样才能以再次重复相同事情的方式处理异常。我知道 P0 将在几分钟内手动运行。
这就是我正在做的事情
int P1Ack = 1;
while(P1Ack != 1) // where P1Ack is the acknowledgment that P0 sends if it gets a message from P1
{
P1connectsP0();
}
public void P1ConnectsP0()
{
String str = "Hello";
{
Socket clientSock = new Socket(lamport.P0Ip, lamport.P0Port);
ObjectOutputStream clientWriter = new ObjectOutputStream(clientSock.getOutputStream());
ObjectInputStream clientReader = new ObjectInputStream(clientSock.getInputStream());
clientWriter.writeObject(str);
clientWriter.flush();
}
catch(IOException ex)
{
System.out.println("Error : P1 unable to talk to P0");
ex.printStackTrace();
}
最佳答案
你在这里似乎使用了一个Socket对象,它是Java中的TCP套接字。 TCP 协议(protocol)保证数据包的传送,因此您不需要进行手动确认。
关于java - 继续尝试联系服务器,直到收到响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5493771/