2010-09-15 3 views
0

Guys им возникли некоторые проблемы с некоторой несогласованности работает кусок кода на Windows XP и Windows 7.Java DatagramSocket на ОС Windows 7

В основном им пытаются отправить UDP-пакет, выполнив,

DatagramSocket sendSocket = new DatagramSocket(); 
DatagramPacket dummyPacket = new DatagramPacket(new byte[ 1 ], 1, 
      configuration.remoteAddress, DUMMY_PORT); 
try { 
    sendSocket.send(dummyPacket); 
    log("send dummy packet succeeded so assume already connected"); 
} catch (NoRouteToHostException nrthe) { 
    log("alreadyConnected: no route to host so assume not connected"); 
} catch (Exception e) { 
    errorHandler.handleException("send dummy packet failed", e, ErrorAndWarningHandler.ERROR); 
} 

В Windows 7 я всегда получаю успех, подключаюсь ли я к удаленному хосту или нет. Где, как и в Windows XP, я получаю исключение, которое я ожидаю. Может кто-то сказать мне, что я делаю неправильно здесь, чтобы он не работал на Windows 7 ????

Цените это

+0

Я думаю, что это поведение XP нечетное - вам не нужно подключаться для отправки дейтаграммы UDP. – sje397

+0

windows xp выдает исключение, когда это происходит, но Windows 7 не делает .... это в основном мой вопрос. если он вызывает ошибку, то это позволяет мне установить соединение. – nixgadgets

ответ

0

Это, как представляется, своего рода несоответствия в Windows 7 и Windows XP. Как и sje397, это может быть неправильное поведение на XP. Я подтвердил это поведение, написав небольшое приложение VB для записи в UDP-сокет. XP не позволяет это, но Windows 7. О, ну, я думаю, мне придется найти альтернативное решение, такое как, возможно, пинг ip или что-то, чтобы проверить, что соединение живое.