
EvilCoder писал(а):xolod писал(а):Слать файлы на один порт, а данные - на другой?
Вот-вот... давно подумывал. наверное так и сделаю
![]()
tyomitch писал(а):EvilCoder, если твоё приложение чувствительно к разбивке приходящих/уходящих данных по пакетам - значит, оно криво написано
Нормально написанный сервер должен по одному только потоку данных определять, где файл, а где команда; опираться на разбивку на пакеты очень ненадёжно.
EvilCoder писал(а):а шо? как делать то?![]()
Значит так:
Клиент отсылает файл.
Socket.SendData "%END%" & BinnaryFileString & "%FILE%"
Сервер принемает.
Socket.GetData StrDATA
If Right$(strDATA,6)="%FILE%" Then DownLoadFile ()
А вот иногда.(если перед файлом Команду отправить) она их склеивает, ну дальше понятно - ОБЛОМ.
Вот скажите.. как можно, проще?
Можно:
Подтверждать полученную команду (облом в скорости - НЕ ПОДХОДИТ)
Искать комманды во всех входящих данных (Split перебором- ТОЖЕ...)
Я идиот! Убейте меня, кто-нибудь!
Option Explicit
dim wt as boolean
sub SendSomething(cmd1 as string, cmd2 as string)
winsock1.senddata cmd1
waitfornext
winsock1.senddata cmd2
end sub
Private Sub Winsock1_SendComplete()
wt = True
End Sub
sub waitfornext()
wt=false
while wt=false
doevents
wend
end sub
dim packets() as string
'код для разбивки файла на пакеты и загрузка пакетов в массив packets
for x = 1 to ubound(packets)
winsock1.senddata packets(x)
waitfornext
next x
...
next x
'цикл отсылки файла завершился
waitfornext
winsock1.senddata "команда1 после отсылки файла"
waitfornext
winsock1.senddata "команда2 после отсылки файла"
Сейчас этот форум просматривают: AhrefsBot, The trick, Yandex-бот и гости: 14