
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.04.2019, 00:01
|
|||
|---|---|---|---|
|
|||
Передача разных файлов через Socket в неблокирующем режиме |
|||
|
#18+
Здравствуйте! Знаю, вопрос избит, но всё же прошу помощи. Компонент TServerSocket/TClientSocket Сокеты в неблокирующем режиме Клиент отправляет: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Сервер принимает: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. В итоге небольшие (~до 3 Мб) файлы принимаются нормально, далее начинаются проблемы. Я пробовал даже просто прочитать пришедшую длину ReceiveLength и считать буфер в никуда. Это для того чтобы просто просуммировать все ReceiveLength при срабатывании события прихода данных. В итоге сумма всех ReceiveLength меньше чем длина ожидаемого файла. В какую сторону подумать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.04.2019, 00:20
|
|||
|---|---|---|---|
|
|||
Передача разных файлов через Socket в неблокирующем режиме |
|||
|
#18+
юзай SendStream передавая в него TFileStream а принимаешь через ReceiveBuf. Логично же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.04.2019, 00:24
|
|||
|---|---|---|---|
|
|||
Передача разных файлов через Socket в неблокирующем режиме |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.04.2019, 01:00
|
|||
|---|---|---|---|
Передача разных файлов через Socket в неблокирующем режиме |
|||
|
#18+
Ну вот в лоб.. 200 Мб передает без проблем... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.04.2019, 10:33
|
|||
|---|---|---|---|
|
|||
Передача разных файлов через Socket в неблокирующем режиме |
|||
|
#18+
Спасибо большое всем откликнувшимся. Приём файла, как оказалось, шёл нормально. Намудрил с буферной передачей. С помощью SendStream всё заработало. Но всё-таки хочу запилить прогрессбар, поэтому буду разбираться. А пока факультативный вопрос на соображение, кому интересно: у меня есть свой TObject, содержащий все необходимые для передачи файла проперти. Также в нём же содержится TClientSocket и TFileStream. В конструкторе моего объекта это всё создаётся динамически. Механизм такой. Вызываем MyObject.OriginalName:='testfile.tmp'; MyObject.Send По этой команде ClientSocket цепляется к заранее известному хосту и в событии OnConnect отправляет всю необходимую инфу приёмнику. Приёмник отвечает одобрением текстовой строкой. В событии OnRead я ловлю эту строку, перевожу флаг моего объекта в режим Receiving:=True и начинаю отправлять файл. Когда приёмник принял весь файл он закрывает соединение. В событии OnDisconnect я хочу дестроить свой объект, но не получается. По отладчику вижу, что всё содержимое освобождается нормально, но потом управление возвращается в OnDisconnect, а собственно сокет я уже убил и лювлю исключение. Что посоветуете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&mobile=1&tid=2039621]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 486ms |

| 0 / 0 |
