Форум: "Сети";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
ВнизAsynchronous socket error 10053 Найти похожие ветки
← →
{bas} (2002-09-04 16:48) [0]Привет! Начал делать, что-то вроде простого прокси и возникает такая ошибка. Кто-то может сказать с чем она связана и как лечится. Делаю я так: есть Серверсокет и клиент сокет.
При ображение к сокету сервера я пишу так
procedure TForm1.ss_MainClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
rt : string;
begin
rt := Socket.ReceiveText;
Memo1.Lines.Add(rt);
cs_Main.Socket.SendText(rt);
end;
При ображение к сокету клиента я пишу так
procedure TForm1.cs_MainRead(Sender: TObject; Socket: TCustomWinSocket);
var
i, size : integer;
rt : string;
buffer : PByteArray;
begin
size := 10024*64;
try
GetMem(buffer, size);
size := Socket.ReceiveBuf(buffer^, size);
for i:=0 to ss_Main.Socket.ActiveConnections-1 do
begin
ss_Main.Socket.Connections[i].SendBuf(buffer^, size);
// вот здесь возникает ошибка
end;
finally
FreeMem(buffer);
end;
end;
Причем ошибка возникает не всегда(но переодично), а после нескольких вызовов cs_MainRead( т.е. onClientSocketRead). И возникает еще одна ошибка(то же не всегда, но переодично) Windows Socket error: (10054), on API "send"
В чем дело или что я делаю не правильно??
P.S. Клиентом я вляется IExplorer
← →
VID (2002-09-08 22:44) [1]Что ты делаешь с помощью этого IE ? какой пакет отсылаешь ?
Думаю имеет смысл, сделать такую проверку:
for i:=0 to ss_Main.Socket.ActiveConnections-1 do
IF ss_Main.Socket.Connections[i]<>nil then
ss_Main.Socket.Connections[i].SendBuf(buffer^, size);
Проверь этот вариант.
← →
{bas} (2002-09-10 20:37) [2]Извиняюсь, что долго не отвечал, но это не помогает
все равно выдает те же ошибки
← →
{bas} (2002-09-11 15:29) [3]помогитееееееееееееееееее
← →
cyborg (2002-09-12 13:10) [4]size := 10024*64;
??? 626,5 килобайт
исправь на 1024
Возможно буфер отсылки переполняется, вот и вылязят ошибки, хотя что за ошибка я незнаю.
FreeMem(buffer);
Думаю лучше так: FreeMem(buffer,size);
← →
cyborg (2002-09-12 13:12) [5]Да, а что у тебя в буфере-то? Мусор отправляешь?
← →
VID (2002-09-12 19:44) [6]TO {bas}:
Или может так:
Size := Socket.ReceivedLength;
+ мой первый совет.
← →
{bas} (2002-09-13 13:26) [7]to VID
Сделал как написано все равно то-же самое
непойму в чем дело????
← →
VID (2002-09-13 20:54) [8]1. Какая ошибка возникает после ss_Main.Socket.Connections[i].SendBuf(buffer^, size) ?
2. Когда возникают ошибки: в ситуации когда клиент - IE, или когда клиент - твоё клиентское приложение ?
3. Строку size := Socket.ReceiveBuf(buffer^, size); замени на size := Socket.ReceiveLenght;
4. Строку size := 10024*64; удали вообще
5. Если клиент <> IE, то что ты вообще отсылаешь с помощью клиента ? Кучу пакетов ?
← →
{bas} (2002-09-16 15:24) [9]to VID
1. Asynchronous socket error 10053
2. Сейчас клиент только IE
3. заменил
4. убрал
5. см. п.2
если не в сложно посмотреть я м.б. прислать исходники??
← →
REA (2002-09-16 17:39) [10]Родные компоненты Delphi глючные - я нашел в свое время 3-5 ошибок, некоторые из которых даже объяснимы и легко воспроизводимы. Смотреть по коду как я это обходил - лениво.
← →
{bas} (2002-09-16 18:34) [11]to REA
скинь тогда я посмотрю
← →
VID (2002-09-16 19:20) [12]to {bas}: замени TByteArray на PChar+предыдущие пункт (3) и (4);
← →
cyborg (2002-09-17 10:36) [13]REA предлагаю всётаки указывать версию Дельфи, когда говорите о глюках!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c