Closed SKART1 closed 10 years ago
@maroki задачу видел? задание понятно?
видел сейчас. понятно все!
@maroki как успехи?
Сделал. Протестуйте!!!
Протестую!!!
@maroki
Тестирую твой код. В win7 соответственно заменил tracerote на tracert. Ввожу это:
Traceroute goko = new Traceroute();
ArrayList<TracerouteItem> resIp;
resIp = goko.traceroute("google.com");
В итоге получаю ошибку в методе parse в строчке: hostname = line.substring(32, indexOf - 1); Я посмотрел что в отладчике. Переменная line имеет значение
������ ������� � google.com [5.17.192.107]
Это понятно, потому что у меня вывод tracert на русском. Но в итоге ошибка заключается в неправильном вызове метода .substring Потому что переменная indexOf равна 28, что меньше 32.
Текст ошибки:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -4
at java.lang.String.substring(String.java:1911)
at iptogeo.Traceroute.parse(Traceroute.java:115)
at iptogeo.Traceroute.traceroute(Traceroute.java:80)
at iptogeo.IpToGeo.main(IpToGeo.java:31)
На Линукс у всех работает?
@GimAndMed выйди в скайп пожалуйста
Могу проверить сейчас на линуксе, какая ветка?
Вроде Dev. Но пусть @GimAndMed уточнит
Да, Dev.
Это клиент, да?
Нет, сервер. Файлы:
Ну запускается без ошибок, этого достаточно?
Нет конечно. Запускать надо примерно такой код:
Traceroute TracerouteMy=new Traceroute();
TracerouteMy.getTracerouteCommand(ip);
TracerouteMy.traceroute(ip);
Тут очень большая проблема с языком системы - т.к. русский он возвращет кракозябрами
А парсинг строки базируется на "буковках"
@321SKART123 куда вставлять этот код?
В main функцию. Запуск всех серверов закомментируй
Я впервые вижу этот код. Что именно там запуск всех серверов?
Все вызовы в главной функции
Просто скажи, какие строки закомментировать и в какую строку вставить твой код.
Блин, Дима ты вообще программировал когда-нибудь?!! ВСЁ в функции main. Вместо этого поставить код что я скинул
Надо было сразу так сказать)
Выполняется, но при этом на каждую строчку, полученную от traceroute, выдаёт подобное сообщение:
java.net.UnknownHostException: .143.101) 38.599 ms 41.736 ms 38.112 ms: System error
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:894)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1286)
at java.net.InetAddress.getAllByName0(InetAddress.java:1239)
at java.net.InetAddress.getAllByName(InetAddress.java:1155)
at java.net.InetAddress.getAllByName(InetAddress.java:1091)
at java.net.InetAddress.getByName(InetAddress.java:1041)
at com.github.skart123.geotracert.geotracertserver.TracerouteItem.<init>(TracerouteItem.java:29)
at com.github.skart123.geotracert.geotracertserver.Traceroute.parse(Traceroute.java:118)
at com.github.skart123.geotracert.geotracertserver.Traceroute.traceroute(Traceroute.java:80)
at com.github.skart123.geotracert.geotracertserver.App.main(App.java:54)
Так ребята пока забейте на тестирования - возвращайтесь к своим задачам. я этим займусь! У меня есть альтернативное решение
Кодировку пофиксил в #51
Парсинг действительно реализован отвратительно. Приедться исправлять в #52
1). Понять как из джавы можно вызвать tracert.
2). Создать клаcc имеющий следующий интерфей: вход1 - строка интересующего ip вход2(?) - некие наборы параметров(посмотреть какие есть параметры у стандартного tacert) выход - контйенер (на свое усмотрение) с информацией о хопах функции (внешние) - запустить трассировку
Пожалуйста продумай над тем что делать в случае ошибки и "зависания"