|
|
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
Добрый день. Соединяюсь с сокетом. Отправляю на него сообщение. Пытаюсь получить ответ и программа как будто зависает. Уверен, что неправильно реализую получение ответа от сокета. Очень нужна помощь. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 18:39:36 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
salaudi, 1. Если у вас Netbeans, то там можно запустить под дебаггингом, потом нажать паузу и увидеть где оно висит. Потому что у вас в проге нету main-а. Возможно это нормально (если вы привели только фрагмент кода), но может и нет. Поэтому даже нет 100% уверенности, что ваш run выполняется. 2. Можно поставить wireshark и посмотреть что куда уходит и что куда приходит. Причем если вы под виндой, то хост куда вы коннектитесь не должен быть той же машиной, т.к. ваершарк под виндой не умеет видеть такой трафик. Если я перавильно понял, вам должно поступить столько же данных, сколько вы отправили. А отправлено должно быть не 0. Соответстенно, если не получено, то проблемы на "той" стороне. А если проблемы на той стороне, то нужен код той стороны. то есть надо выяснять сколько куда ушло и сколько пришло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 19:16:31 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
chabapok, Добрый день. Main есть. Просто я выложил тут только код класса, который выполнят запись и чтение из сокета. Я добавлял вывод на экран сообщений, после каждого действия (подключение к сокету, запись в сокет и чтение из сокета). Так вот, подключение и запись проходят, а когда перехожу к чтению, то программа дальше не идет. Я не использую Netbeans, я пишу Java программу из торговой программы для биржевой торговли. Так что там не проходит отладка. А подключаюсь к серверу биржи, на той стороне все впорядке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 19:34:13 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
Добавьте outputS.flush() перед тем, как начинать чтение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 19:44:11 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
cdtyjv, Добрый вечер. Что то не помогло.( Может как то надо переписать кусок с чтением из сокета? Добавить попытку? Или while? Я смотрел примеры с чтением из сокета, везде по разному читают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 20:33:25 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
Тогда см. пункт 2. "дальше не идет" скорей всего может быть по 1 причине - не приходит полностью обьект. (На самом деле, конечно, формально, причин может быть больше, типа своей библиотеки классов с глючным ObjectOutputStream и тд... Но все они малореальны.) дальше надо смотреть как именно обьект приходит неполностью и разбираться почему. Ставьте wireshark или tcpdump - и вперед. смотрим что ушло и что пришло. Сравниваем. Делаем выводы. а "все в порядке" - это растяжимое понятие, но как правило подразумевается, что API на той стороне работает нормально. А вам этого мало, вам надо чтобы API на вашей стороне соответствовало тому, которое ожидает та сторона. А выяснить это можно тем вариантом что я предложил, или более внимательным чтением документации, или сравнивать с примерами если они есть. Но тут как вы понимаете форум ничем не поможет. А посмотреть что там у вас за байтики бегают - это "железный" способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 22:21:23 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
еще можно набросать простую прожку, которая ожидает подключения и отвечает теми данными, которые в нее поступают. И этой прожкой проверить свою прожку. Если заработает - значит ваша прожка шлет на ту сторону не то, что та сторона ожидает получать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 22:24:41 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
chabapok, спасибо за совет. Сейчас попробую реализовать сокет-сервер на локальной машине и проверить отправку на него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 22:33:59 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
нате вам, у меня такая была. ваша прога рабочая, я проверил, следовательно у вас "проблемы" с той стороной, в часности с протоколом. Дальше на доки смотреть, без них ничего конкретней сказать нельзя. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 22:37:42 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
chabapok, спасибо. Сейчас попробую. А Вы пробовали поставить вывод сообщении после строк: Код: java 1. 2. и после Код: java 1. 2. 3. У меня при выполнении программы печатается только первое сообщение "message send". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 22:47:39 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
Я позаменял ваши this.console... на System.out.println А смысл мне это пробовать? У меня ваш участок кода отрабатывает и номально завершается, выводя ожидаемую строку. Соответственно, если вставить туда принты, то они напечатаются в нужных местах. У вас даже с моей прожкой не работает? Ну даже не знаю. Можно catch(Throwable th) поставить, то может у вас там OOM бросается какое-нибудь, но маловероятно конечно. Конечно, скорей всего, в таком баге виноват фаерволл. В нем может быть все дело. Например, пару месяцев назад приползло какое-то обновление семерки, которое позакрывало на фаервлое целую кучу портов. Тоже виндозное tftp перестало работать, к примеру. Помню, продолбался полдня где-то, пока понял в чем дело и как включить. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 23:41:06 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
salaudi, Серверная часть тоже ваша или уже готовая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 11:32:50 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
Garrick, Маловероятно, что серверная часть его. Я думаю, если бы серверная часть была его, у него таких вопросов не возникало бы. Хотя если она "у него", но писана не им.... И маловероятно, чтобы серверная часть позволяла вот так писать в нее сериализованые стринги. Там скорей всего или http или просто строки писать надо ей. но это уже надо документацию смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 14:46:30 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
Garrick, нет серверная часть не у меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 20:50:44 |
|
||
|
при получении ответа от сокета программа зависает
|
|||
|---|---|---|---|
|
#18+
salaudi, Часто в таких системах принимающая сторона ждёт специального символа "окончания передачи". Возможно серверная сторона ждёт его, а вы не передаёте - вот и висит. Раз серверная часть не ваша, надо прояснить у разработчика этот момент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2013, 13:02:39 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38459628&tid=2128220]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 443ms |

| 0 / 0 |
