|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Произвольные данные через TCPSend() / TCPRecv() |
|
[решено] Произвольные данные через TCPSend() / TCPRecv()
|
Новый участник Сообщения: 36 |
как с помощью TCPSend/Recv передать файл, а не только текст?
или передать файл как текст, а на входе преобразовать обратно.. такое возможно? |
|
Отправлено: 02:48, 10-07-2010 |
![]() Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать Intexid, передавать и принимать бинарные данные. чтобы передать
$hRead = FileOpen($sFile, 16); Флаг 16 - бинарное чтение файла $xData = FileRead($hRead, $nData); Читаем данные по $nData - байт в цикле Прием |
------- Отправлено: 10:32, 10-07-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 36
|
Профиль | Отправить PM | Цитировать kaster,
Все работает!!! ![]() а я то думал, это будет целая проблема.. пока только по частям передавать не получается, т.е. файл только целиком. при указании $nData в файл пишет только первый кусок, хотя на стороне клиента цикл вроде продолжается.. в связи с этим вопрос: существует ли ограничение на размер данных, отданный одним куском? с какими флагами на стороне сервера принимать?: FileOpen(), FileWrite() |
Отправлено: 13:15, 10-07-2010 | #3 |
![]() Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать Intexid, чесгря я знаком исключительно с концепцией реализации, которую сам написал постом выше. "своими руками" не пробовал. но мне кажется проблем быть не должно. в справке ограничения как таковой нет, но целесообразней и надежней (ИМХО) передавать все же небольшими кусками, особенно если файл большой. на стороне сервера (понял исключительно из контекста где сервер а где клиент) принимать надо по TCPRecv, если я правильно тебя понял. Чтобы записать нужно предварительно открывать файл на запись в бинарном режиме
и уже потом писать в него по хендлу. либо в конце приема-передачи записать аккумулируюшую переменную, либо в цикле записывать каждый кусок после приема. скинь свой код, так будет понятнее, что уже сделано а что пропущено или надо дополнить |
------- Отправлено: 13:55, 10-07-2010 | #4 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 17:44, 10-07-2010 | #5 |
![]() Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать madmasles, нет. не обязательно. просто не надо хендл закрывать после записи. то что ты говоришь, это дописывание в файл после очередного открытия
|
------- Отправлено: 17:47, 10-07-2010 | #6 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать kaster,
Специально проверил. Я был не прав. Хотя, работает и так и так. |
Отправлено: 17:53, 10-07-2010 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Данные абонента | ][alter | Мобильные ОС, смартфоны и планшеты | 1 | 11-09-2009 17:27 | |
HDD - Восстановить данные | optima22 | Накопители (SSD, HDD, USB Flash) | 11 | 16-04-2009 15:36 | |
MSFT SQL Server - Пропадают данные | GROMOZEKA_TSP | Программирование и базы данных | 7 | 02-07-2008 23:29 | |
Где данные? | banshee | Хочу все знать | 10 | 19-10-2005 08:50 | |
Учетные данные | buffer26 | Сетевые технологии | 5 | 08-06-2004 21:13 |
|