Хабом не получается, как еще можно сделать? Закрывает раньше и ничего не передается.
code_32378.txt
Этот топик читают: Гость
Ответов: 257
Рейтинг: -2
|
|||
карма: 0 |
| ||
файлы: 1 | code_32378.txt [730B] [78] |
Ответов: 313
Рейтинг: -9
|
|||
карма: 0 |
| ||
файлы: 1 | code_32381.txt [773B] [84] |
Ответов: 257
Рейтинг: -2
|
|||
конечно нет. я уже по всякому пробовал, никак не прокатывает.
|
|||
карма: 0 |
|
Ответов: 704
Рейтинг: 44
|
|||
mudfactory писал(а): конечно нет. я уже по всякому пробовал, никак не прокатывает.Плохо пробуешь, смотри мой пример все работает.
|
|||
карма: 0 |
| ||
файлы: 1 | code_32382.txt [8.5KB] [75] |
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Kazbek17 писал(а): все работаетKazbek17, таймер не решение вопроса. Где уверенность, что за одну секунду данные гарантировано будут доставлены серверу? По-нормальному, сервер должен давать клиенту ответ о получении всех данных, по получению которого, клиент может спокойно отключиться или передавать следующие данные, либо сам сервер должен отсоединять клиента по получению всех данных |
|||
карма: 22 |
|
Ответов: 4631
Рейтинг: 749
|
|||
Можно посылать данные в определенном формате, например, сначала 4 байта - длина данных, потом сами данные. При получении указанного количества считать передачу завершенной.
Ещё было бы очень полезным событие onSend в компонентах TCP_Server и TCP_Client, которое просигнализирует о завершении передачи данных методом doSend. |
|||
карма: 26 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Netspirit, все это требует подтверждающего ответа от сервера.
|
|||
карма: 22 |
|
Ответов: 4631
Рейтинг: 749
|
|||
Да не, хотя бы в смысле "с нашей стороны пули вылетели", то-есть: "Я закончил передачу данных. Не могу гарантировать, что они были получены на том конце.".
|
|||
карма: 26 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Netspirit писал(а): "Я закончил передачу данных. Не могу гарантировать, что они были получены на том конце."Да у ТС оно и сечас так работает -- данные отправлены, а там хоть трава не расти, вот ему и нужно иметь гарантированное подтверждение получения с закрытием коннекта на своей стороне. А то он его закрывает, а тк передача данных работает асинхронно, то синхронное закрытие приводит к отсечке передачи. |
|||
карма: 22 |
|
Ответов: 4631
Рейтинг: 749
|
|||
Именно, он даже не может узнать когда он сам закончит свою передачу. Причем здесь подтверждение получения от другой стороны?
|
|||
карма: 26 |
|
Ответов: 704
Рейтинг: 44
|
|||
nesco писал(а): Kazbek17, таймер не решение вопроса
|
|||
карма: 0 |
| ||
файлы: 1 | code_32384.txt [8.1KB] [82] |
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Netspirit писал(а): Именно, он даже не может узнать когда он сам закончит свою передачу. Причем здесь подтверждение получения от другой стороныПривет. Ты заполняешь буфер передачи, команда Send заканчивается на этом, дальше работает система, как ты у нее узнаешь, что все данные переданы и доставлены серверу? Если не отключать клиента, то нам будет пофиг, когда данные доплетутся до сервера, мы можем спокойно заполнять буфер дальше, а вот для отключения мы точно должны знать, что все данные доставлены |
|||
карма: 22 |
|
Ответов: 704
Рейтинг: 44
|
|||
nesco писал(а): Привет. Ты заполняешь буфер передачи, команда Send заканчивается на этом, дальше работает система, как ты у нее узнаешь, что все данные переданы и доставлены серверу? Если не отключать клиента, то нам будет пофиг, когда данные доплетутся до сервера, мы можем спокойно заполнять буфер дальше, а вот для отключения мы точно должны знать, что все данные доставленыСогласен. Но тогда нужно схему собирать таким путем, чтобы сервер отсылал отчет о доставке и после этого уже отключался клиент. |
|||
карма: 0 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Kazbek17 писал(а): Я посмотрел onProgress но как он работает я так и не понялОн работает на прием, а нам нужно на передачу ------------ Дoбавленo в 14.08: Kazbek17 писал(а): Но тогда нужно схему собирать таким путем, чтобы сервер отсылал отчет о доставке и после этого уже отключался клиент.Млин, а я про что говорю? nesco писал(а): сервер должен давать клиенту ответ о получении всех данных, по получению которого, клиент может спокойно отключиться |
|||
карма: 22 |
|
Ответов: 4631
Рейтинг: 749
|
|||
Нужно искать в API, должны быть соответствующие сигналы. Ставить паралельный поток на ожидание сигнала. Либо добавить синхронный режим передачи. Но опять же это требует достаточно большой доработки компонентов.
|
|||
карма: 26 |
|