|
|
|
Ошибка при записи данных в сокет
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть следующий тестовый код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Когда размер тестового массива 100000 все нормально данные уходят на тестовый сервер, но если размер к примеру увеличивается до 200000, то при записи данных вот такая ошибка: Код: plaintext 1. 2. 3. 4. 5. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 15:50:52 |
|
||
|
Ошибка при записи данных в сокет
|
|||
|---|---|---|---|
|
#18+
Скорее всего ограничение на количество сетевых соединений. Я всегда считал что возможное количество одновременных сетевых соединений с серверным сокетом, если не задано специальных ограничений, 65 тыс. Возможно я не прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 16:08:56 |
|
||
|
Ошибка при записи данных в сокет
|
|||
|---|---|---|---|
|
#18+
KachalovСкорее всего ограничение на количество сетевых соединений. Я всегда считал что возможное количество одновременных сетевых соединений с серверным сокетом, если не задано специальных ограничений, 65 тыс. Возможно я не прав. не прав, зависит от ОС и настраивается обычно в ядре. Грохается у тебя сервер, ftp? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 16:33:26 |
|
||
|
Ошибка при записи данных в сокет
|
|||
|---|---|---|---|
|
#18+
am_sasa KachalovСкорее всего ограничение на количество сетевых соединений. Я всегда считал что возможное количество одновременных сетевых соединений с серверным сокетом, если не задано специальных ограничений, 65 тыс. Возможно я не прав. не прав, зависит от ОС и настраивается обычно в ядре. Грохается у тебя сервер, ftp? Нет на сервере все ок, он продолжает обарабытывать запросы. Никаких ошибок на нем нет. Ошибка именно на клиентской части. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 17:30:33 |
|
||
|
Ошибка при записи данных в сокет
|
|||
|---|---|---|---|
|
#18+
На всякий случай вот код тестового сервера (в нем ничего сверхестественного нет): Код: plaintext 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. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 17:36:03 |
|
||
|
Ошибка при записи данных в сокет
|
|||
|---|---|---|---|
|
#18+
для теста мож и ничего, но так... попробуй в цикле почитать этот кусок, тогда все будет ОК! но скорее всего сервер будет висеть до бесконечности... протокол будет нужен)))) Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 18:39:10 |
|
||
|
Ошибка при записи данных в сокет
|
|||
|---|---|---|---|
|
#18+
Прошу прощения - невнимательно посмотрел на код клиента (мне показалось, что сокеты создаются в цикле). А зачем вам писать блок в 200000 байт, пишите в цикле по байту, чтобы не происходило переполнение буфера: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 18:45:17 |
|
||
|
Ошибка при записи данных в сокет
|
|||
|---|---|---|---|
|
#18+
KachalovПрошу прощения - невнимательно посмотрел на код клиента (мне показалось, что сокеты создаются в цикле). А зачем вам писать блок в 200000 байт, пишите в цикле по байту, чтобы не происходило переполнение буфера: Код: plaintext 1. 2. 3. 4. 5. Это понятно, что одним из решений проблемы является уменьшение размера блока. А не могли бы Вы по подробней написать о переполнении буфера, или где можно об этом почитать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 10:27:04 |
|
||
|
Ошибка при записи данных в сокет
|
|||
|---|---|---|---|
|
#18+
spirit83 Это понятно, что одним из решений проблемы является уменьшение размера блока. А не могли бы Вы по подробней написать о переполнении буфера, или где можно об этом почитать? эт он пошутил)) переполнения в ПОТОКЕ не бывает! клиент с сервером д.б. отрабатывать единый протокол, вот сделай его и все будет ок! передаешь 1000000000 в клиенте, тогда на сервере стока и читай, а то у тебя стоит слозе после 64К, вот и слиент получает по лбу! чини сервер! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 10:45:44 |
|
||
|
Ошибка при записи данных в сокет
|
|||
|---|---|---|---|
|
#18+
am_sasaэт он пошутил)) переполнения в ПОТОКЕ не бывает! - вообще то, нет, не шутил :) Ошибка в клиенте происходит из за попытки записать в поток блок длиной 200000 байт (одновременно), который не влазит в буфер native-метода, соответствующего методу write() в OutputStream-е. А вот если разбить этот блок на небольшие части и стравливать их в поток по очереди, то тогда действительно, проблема исчезнет. Т. е. переполнение происходит не в потоке :) , а в методе write, точнее в его сишной реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 11:43:38 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34342993&tid=2146598]: |
0ms |
get settings: |
20ms |
get forum list: |
26ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
61ms |
get topic data: |
25ms |
get forum data: |
6ms |
get page messages: |
109ms |
get tp. blocked users: |
3ms |
| others: | 350ms |
| total: | 612ms |

| 0 / 0 |
