Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.27;
Скачать: CL | DM;

Вниз

возникает ошибка: Asynchronous socket error 10053   Найти похожие ветки 

 
Sergl ©   (2007-09-27 22:36) [0]

Хочу отправить файл через сокет:

на сервере:

procedure Tserver_glav_form.Button1Click(Sender: TObject);
var asd:Tmemorystream;
begin
asd := TMemoryStream.Create;
asd.LoadFromFile("c:\1.txt");
asd.Position:=0;
if (serversocket1.Socket.Connections[0].Connected) then begin
 if serversocket1.Socket.Connections[0].SendStream(asd) then showmessage("ушло") else showmessage("не ушло");
end else showmessage("false");
asd.free;//здесь возникает ошибка Access violation
end;


на клиенте:

procedure Tclientglav_form.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
var asd:tmemorystream;
     len:integer;
     buf:pointer;

begin
 Len:=Socket.ReceiveLength;;
 GetMem(Buf, Len+1);
 asd:=TMemoryStream.Create;
 asd.Position:=0;
 ClientSocket1.Socket.ReceiveBuf(Buf, Len);
 asd.WriteBuffer(buf, Len);
 asd.Position:=0;
 asd.SaveToFile(PChar("c:\000.txt"));
 asd.Free;
FreeMem(Buf);//Здесь возникает ошибка Access violation
 clientsocket1.Socket.Close;
end;


Объясните, пожалуйста, как исправить ошибки?

PS. тестирую на одном компе. В итоге файл сохраняет:)


 
Сергей М. ©   (2007-09-28 08:44) [1]


> asd.free;//здесь возникает ошибка Access violation


Справку-то читал по SendStream ?


> FreeMem(Buf);//Здесь возникает ошибка Access violation


Потому что содержимое переменной Buf ты испоганил в этой строчке:


> ClientSocket1.Socket.ReceiveBuf(Buf, Len);


 
Sergl ©   (2007-09-28 09:25) [2]

С первой access violation все ясно, а со второй нет...

> Потому что содержимое переменной Buf ты испоганил в этой
> строчке:> ClientSocket1.Socket.ReceiveBuf(Buf, Len);

Чем и когда я испоганил Buf...не понимаю...?


 
Сергей М. ©   (2007-09-28 10:00) [3]


> Чем и когда я испоганил Buf.


Испоганил ты эту переменную вызовам метода ReceiveBuf, не разыменовав переменную указательного типа Buf.


 
Sergl ©   (2007-09-28 10:01) [4]


> Сергей М. ©   (28.09.07 08:44) [1]
> > asd.free;//здесь возникает ошибка Access violationСправку-
> то читал по SendStream ?> FreeMem(Buf);//Здесь возникает
> ошибка Access violationПотому что содержимое переменной
> Buf ты испоганил в этой строчке:> ClientSocket1.Socket.ReceiveBuf(Buf,
>  Len);

Спасибо! Нужно было писать

ClientSocket1.Socket.ReceiveBuf(Buf^, Len);
asd.WriteBuffer(buf^, Len);


Теперь возникла вот такая проблема: если посылаю файл больше 8192byte`а
то прога тоже ругается:"Asynchronous socket error 10053"  Я так полагаю нужно где-то настроить размер передаваемых вайлов? А вот где я не знаю.


 
Сергей М. ©   (2007-09-28 10:05) [5]


> ругается:"Asynchronous socket error 10053"


SendStream не может вызвать такой ошибки.


 
Сергей М. ©   (2007-09-28 10:12) [6]


> SendStream не может вызвать такой ошибки.


Пардон, ошибка возникает из-за того, что обработав на клиентской стороне одно-единственное событие OnRead ты тут же закрываешь соединение.


 
Sergl ©   (2007-09-28 10:27) [7]


> Сергей М. ©   (28.09.07 10:12) [6]
> > SendStream не может вызвать такой ошибки.Пардон, ошибка
> возникает из-за того, что обработав на клиентской стороне
> одно-единственное событие OnRead ты тут же закрываешь соединение.
>

Спасибо еще раз! Все... вопросов, пока, больше не имею.

ЗЫ.Блин... два дня убил на это.... однакож цель оправдывает средства:)


 
Сергей М. ©   (2007-09-28 10:37) [8]


> Блин... два дня убил на это


И еще минимум столько же убьешь)

Грабли-то, судя по коду, продолжают иметь место быть)

Обрати самое серьезное внимание на то, что метод ReceiveBuf является функциональным, а не процедурным.



Страницы: 1 вся ветка

Текущий архив: 2008.07.27;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.006 c
2-1214247277
cr@nk
2008-06-23 22:54
2008.07.27
Setlength для 2мерного массива


1-1196256825
Silver...
2007-11-28 16:33
2008.07.27
Игнорировать Minimize


2-1214313276
implementation
2008-06-24 17:14
2008.07.27
Двойной клик по фиксированной ячейке в TStringGrid.


2-1214230754
evgenij
2008-06-23 18:19
2008.07.27
В чем рисовать


15-1212760713
Vlad Oshin
2008-06-06 17:58
2008.07.27
моя плакаю. Бросаем delphi, переходим на С под NET





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский