继续尝试联系服务器,直到响应到来

时间:2011-03-30 23:45:01

标签: java sockets

我需要用机器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();
        }

1 个答案:

答案 0 :(得分:0)

您似乎在这里使用Socket对象,这是Java中的TCP套接字。 TCP协议保证了数据包的传送,因此您无需进行手动确认。