gpt4 book ai didi

java - 设置套接字接收超时

转载 作者:搜寻专家 更新时间:2023-10-30 20:59:45 25 4
gpt4 key购买 nike

我想向服务器发送数据,然后等待一分钟的响应,然后关闭套接字。

怎么做?

 DatagramPacket sendpack = new ......;
socket.send(pack);
DatagramPacket recievepack = new .....;
//wait 1 minute{
socket.recieve(buf);
//wait 1 minute}
socket.close();

最佳答案

你可以试试这个。根据您的场景需要更改套接字的超时时间!此代码将发送一条消息,然后等待接收消息,直到达到超时!

DatagramSocket s;

try {
s = new DatagramSocket();
byte[] buf = new byte[1000];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
InetAddress hostAddress = InetAddress.getByName("localhost");

String outString = "Say hi"; // message to send
buf = outString.getBytes();

DatagramPacket out = new DatagramPacket(buf, buf.length, hostAddress, 9999);
s.send(out); // send to the server

s.setSoTimeout(1000); // set the timeout in millisecounds.

while(true){ // recieve data until timeout
try {
s.receive(dp);
String rcvd = "rcvd from " + dp.getAddress() + ", " + dp.getPort() + ": "+ new String(dp.getData(), 0, dp.getLength());
System.out.println(rcvd);
}
catch (SocketTimeoutException e) {
// timeout exception.
System.out.println("Timeout reached!!! " + e);
s.close();
}
}

} catch (SocketException e1) {
// TODO Auto-generated catch block
//e1.printStackTrace();
System.out.println("Socket closed " + e1);

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

关于java - 设置套接字接收超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com