java-接收UDP包时设置超时函数java

Posted

技术标签:

【中文标题】java-接收UDP包时设置超时函数java【英文标题】:Java-Setting a tiimeout function when receiving a UDP packet java 【发布时间】:2016-02-05 17:02:35 【问题描述】:

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

这是我所拥有的,但我不断收到错误:

线程“主”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】:

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

【讨论】:

以上是关于java-接收UDP包时设置超时函数java的主要内容,如果未能解决你的问题,请参考以下文章

python3套接字udp设置接受数据超时

设置java函数的响应时间以及超时处理

UDP 套接字设置超时

多线程设置线程超时思路

我可以在 C# 中为 UdpClient 设置超时吗?

Java中多个客户端的超时