ПК Windows отправляет подтверждение.Но это не прибывает в Linux.Что мне не хватает?(Но когда я не использую Windows 7 и делаю тот же код под Linux для Linux, это работает.)
Любые идеи !!!
ПК с Windows 7: Отправитель / Ответчик
System.out.println("[UDP]: "
+ "RemoteIP: " + IPAddress.toString() + " "
+ "Port: " + port + " "
+ "Length: " + send.length() + " "
+ "Sending confirmation!"); // it shows it has correct ip, port and lenght
sockOutput = new DatagramPacket(send.getBytes(), send.length(), IPAddress, port);
serverSock.send(sockOutput);// is it failing???
ПК с Linux: приемник / коммандер
String receive = sendUDPBytes("request", ip).toString();
if (receive.length()<=0) // Waiting forever, and nothing happens LINUX.
{
System.out.println("FAILED");
System.exit(0);
} else {
try {
/* JOB todo */
} catch (Exception ex) {
}
}
sockOutput.write(receive.getBytes());
public static String sendUDPBytes(String bytes, String[] ip) throws IOException
{
String downloaded = null;
DatagramSocket socket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName(ip[2]);
byte[] sendData = new byte[14024];
byte[] receiveData = new byte[14024];
sendData = bytes.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length);
socket.connect(IPAddress, 58889);
if (socket.isConnected())
{
System.out.println("[UDP]: sending....., waiting......... until receive....");
socket.send(sendPacket);
}
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
socket.receive(receivePacket);
downloaded = new String(receivePacket.getData());
System.out.println("[UDP]: closing.....");
socket.close();
return downloaded;
}
Последующие действия:
0) Не запутайтесь с "ВЫ В ОДНОЙ СУБСЕТЕ?"?? ", поэтому, если у вас есть сеть / 28, все могут обменять пакет.В этом случае это работает, но в большинстве случаев это не так.
1) Код идеален, когда я тестирую ЛВС в ЛВС, независимо от того, какая это операционная система, он работает (нет брандмауэра источника)
2) Когда я тестирую Windows на Windows на том же ПК, он тоже работает
3) Когда я тестирую Linux на Linux, он тоже работает
4) Когда я тестирую Linuxдля Windows или Windows для Linux это тоже работает
5) Тот же код, который я поместил на один центральный сервер, и тот же код, который я запускал на локальном ПК с Windows, и другие интернет-провайдеры, кажется, позволяют это.
6) Спрятал 10 часов, чтобы найти его
Угадай:
Что именно было тогда причиной?Ну, интернет-провайдер теряет пакет, который был отправлен на мой общедоступный IP-адрес, или, может быть, он отключает тех, у кого есть общедоступный IP-адрес.