Я пытаюсь использовать мультикастокеты в моей программе.Сегодня я не уверен, что изменилось, но моя программа (которая раньше не работала и работала нормально) начала случайным образом зависать при вызове метода setSoTimeout(int)
.Это не всегда, метод может быть вызван несколько раз, прежде чем это произойдет.Любые подсказки относительно того, что это такое?
Код:
private String[] getPlayerInfo() {
sendMessageToPlayers("count", 500);
String[] temp = new String[4];
while (true) {
try {
byte[] buffer = new byte[1000];
DatagramPacket datagram = new DatagramPacket(buffer, buffer.length);
cSocket.receive(datagram);
String message = new String(datagram.getData());
if (message.contains("received")) {
message.substring(message.indexOf("received") - 1, 1);
int playerNum = Integer.parseInt(message.substring(message.indexOf("received") - 1, 1));
temp[playerNum] = message.substring(message.indexOf("received") + "received ".length());
}
} catch (IOException e) {
try {
cSocket.setSoTimeout(100000);
} catch (SocketException e1) {
break;
}
break;
}
}
return temp;
}
public void sendMessageToPlayers(String message, int timeout) {
byte[] buf = (message).getBytes();
DatagramPacket dg = new DatagramPacket(buf, buf.length, group, 6789);
try {
cSocket.send(dg);
cSocket.setSoTimeout(timeout);
} catch (IOException ex) {
System.out.println(ex);
}
}