![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странная ошибка в программе [D5, Win95/98]
Malder © (2002-01-04 00:55:00)рофесcионалы, пожалуйста, помогите. Просто нереальная ошибка какая то. На форме ClientSocket1 и ServerSocket1. Вот код:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var i:integer;
dop:array of char;
begin
i:=socket.ReceiveLength ;
setlength(dop,i+1);
socket.ReceiveBuf(dop,i);
clientsocket1.Socket.SendBuf(dop,i); // Здесь ошибка
end;
Выползает на последней строчке EAccessViolation.
Если вместо массива char"ов использовать Pchar :-) и GetMem вместо setlength то все тоже самое. Я просто не знаю, что делать. Перепробовал все.
Протестировать можно, например, задавая ServerSocket1.Port:=80, а ClientSocket по фигу куда коннектить (хоть на microsoft.com ). И как только включишь IE и введешь http://127.0.0.1то все.. будет данная трабла. Я в шоке :-)
Malder (2002-01-04 16:55:00) [1]Делал я прогу для того, чтобы через нее проходил трафик. То есть чтобы Explorer связывался НЕ с www.ya.ru (например), а сначала с моей прогой, которая уж связывается с удаленной машиной. То есть типа как прокси получается. Ну нужно мне так. Вы лучше обьясните в чем ОШИБКА ??? Это что, глюк DELPHI ?
YuriBtr (2002-01-04 09:45:00) [2]Ничего странного .NET
IMHO ServerSocket1ClientRead предназначен для получения данных сервером от клиента. И поэтому мне совсем не понятен смысл процедуры:
clientsocket1.Socket.SendBuf(dop,i); // Здесь ошибка
Зачем???
Ты уже получил данные - они в dop.
Теперь их просто обработай.
Но перед получением сервером данных, ты их должен послать :) через clientsocket1.Socket.SendBuf(dop,i) но это должно быть совсем в другой процедуре. Например при клике на кнопке "послать файл"
False_Delirium (2002-01-04 05:41:00) [3]Pointer(dop[1])^ - так попробуй...