Страницы

Поиск по вопросам

пятница, 20 марта 2020 г.

Android и NIST Internet Time Servers

#android #java #udp


Подскажите кто знает в чем может быть проблема?
Есть код: 
InetAddress address1 = InetAddress.getByName("nist.netservicesgroup.com");
int server_port = 123;
socket = new DatagramSocket();
byte[] buf = new byte[1024];
socket.setSoTimeout(10000);
DatagramPacket packet = new DatagramPacket(buf, buf.length, address1, server_port);
socket.send(packet);

DatagramPacket packet2 = new DatagramPacket(buf, buf.length);
socket.receive(packet2);

Отправляет на сервер nist.netservicesgroup.com порт 123 запрос. После чего ждет ответ
10 сек. 
Стоит permission android.permission.INTERNET.
Ответ не приходит. Ставил разные порты (13, 37 и 123). Менял разные адреса (список
тут http://tf.nist.gov/tf-cgi/servers.cgi)
Куда, что засунуть и откуда что высунуть чтобы заработало?
Заранее спасибо за полезные ответы.     


Ответы

Ответ 1



К сожалению, я не сталкивался с сокетами в андроиде и не работал с NIST. Из своего опыта с WinSock и сокетами на юникс-системах могу предложить использовать пятизначные порты, а также попробуйте настроить работу через стандартные способы, например через протокол tcp (т.к если назначения не существует, то сообщение просто не уйдет). Также проверьте доступность портов с другой стороны. У меня часто бывало, что сервер был выключен или работал на другом сокете. Незаменимым помощником будет браузер+ping+telnet (последнее я не использовал, но в различной литературе упоминается постоянно).

Ответ 2



вдруг кому пригодится, рабочий код: InetAddress address = InetAddress.getByName("nist.netservicesgroup.com"); int server_port = 37; Socket conn = new Socket(address1, server_port); InputStream in = conn.getInputStream();

Комментариев нет:

Отправить комментарий