Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.10.130] |
|
Сообщ.
#1
,
|
|
|
Короче проблема в следующем - если локально читаю файл и в цикле по 10 байт посылаю, то все работает, но уж очень долго, если считывать большее количество байт (следовательно и посылать большее), то почему - то когда принимаю (клиентом), то приходит не все содержимое файла, аналогично с заменой задержки (sleep). В чем проблема, а может это из - за того, что я пробую это локально?
Помогите... <br> hFile:=CreateFile(name, GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);<br> len:=GetFileSize(hFile, nil);<br> c:=len;<br> while c>0 do<br> begin<br><br> ReadFile(hFile,buf,10,Bytes,nil);<br><br> if(Bytes>0)then<br> begin<br><br> send(sock, buf, Bytes, 0);<br> ZeroMemory(@buf, sizeof(buf));<br> Sleep(40);<br> dec(c, Bytes);<br><br> end;<br> end;<br> CloseHandle(hFile);<br> |
Сообщ.
#2
,
|
|
|
Потому что Sleep() останавливает текуще выполняемый поток и соответственно инфа не передаётся. Надо использовать либо таймер либо цикл+обработка сообщений либо нить. Хотя конечно зависит от реализации. Само строение проги на АПИ или VCL ?
|
Сообщ.
#3
,
|
|
|
Цитата Само строение проги на АПИ или VCL ? 1 |
Сообщ.
#4
,
|
|
|
Разобрался, все работает.
|