提问者:小点点

Java-在接收UDP数据包时设置tiimeout函数Java


我试图发送一个UDP数据包,然后等待从服务器返回的响应2秒。如果我的套接字这次没有从服务器接收回数据包,那么我将不得不再次发送回相同的数据包。我希望程序在发送完5之后停止发送数据包,然后声明服务器关闭。

下面是我得到的结果,但我一直得到错误:

线程“main”java.net.SocketTimeoutException中的异常:接收超时

    clientSock.send(UDP_Packet);
    int count=0;
    while(count <5){
        try{
            clientSock.recieve(incomingPacket);
            clientSock.setSoTimeout(2000);
        } catch (SocketException e) {
            clientSock.send(UDP_Packet);
            count++;
            if(count>=5){
            System.out.println("Server is Down");
            }
        }
    }

有人能告诉我,我在这里做错了什么,或者如何实现它吗?

谢谢你抽出时间


共1个答案

匿名用户

您需要在执行接收之前设置超时,而不是在之后,但主要问题是您捕获了错误的异常。您应该捕获