Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / сокеты не сокетят / 5 сообщений из 5, страница 1 из 1
10.05.2003, 17:01
    #32156846
Ы
Ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сокеты не сокетят
в клиентском приложении

procedure TSDIAppForm.Button3Click(Sender: TObject);
begin
cs.Open; // это ClientSocket
cs.Socket.SendText('трям');
end;


в серверном

procedure TSDIAppForm.ssClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
showmessage(ss.Socket.ReceiveText); // это ServerSocket
end;

при нажатии той самой кнопки на клиенте сообщает "asynchronous socket eror 10053",
а сервер в это время выдвет "windows socket error : a request to send or receive data was disallowed because the socket is not connected and (when sending on a datagramm socket using a sendto call) no address was supplied (10057), on API 'recv'"

Это почему это он так меня? Как это не коннектед если коннектед? Дык если бы не коннектед как вообще сервер об отправке узнал??? Помогите, плиз...
...
Рейтинг: 0 / 0
10.05.2003, 17:09
    #32156850
Pat
Pat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сокеты не сокетят
>cs.Open; // это ClientSocket
>cs.Socket.SendText('трям');
ПРи посылки сообщения киент еще не приконнектился к серверу.
Напишите cs.Socket.SendText('трям') в обработчике клика другой кнопки, а у этой оставте только cs.Open
...
Рейтинг: 0 / 0
10.05.2003, 17:15
    #32156854
Ы
Ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сокеты не сокетят
сделал. та же ерунда...

procedure TSDIAppForm.ssClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
showmessage('yo!');
end;

вот это срабатывает - значит коннектится-то клиент! а передавать ничего не хочет... Вообще я файл пытался кинуть, думал я с потоком что-то намудрил, а попробоват текст послать - и такая же ерундень...

вообще по-моему в разные кнопки разносить... толк-то какой?
...
Рейтинг: 0 / 0
10.05.2003, 18:59
    #32156878
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сокеты не сокетят
А ты попробуй чат тот что в демках с дельфями откомпилить и поюзать. Если и он глючит - значит беда с твоим мосдаем или линухом, а может ещё чем-то ...
...
Рейтинг: 0 / 0
11.05.2003, 22:53
    #32157072
Ы
Ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сокеты не сокетят
частично разобрался (нефиг было писать ss.Socket.ReceiveText вместо Socket.ReceiveText), но вот такая ерунда

var l: Integer;
buf: PChar;
src: TFileStream;
begin
l := Socket.ReceiveLength;
GetMem(buf,l+1);
Socket.ReceiveBuf(buf,l);
src := TFileStream.Create(\\server\zakaz\oredr.mdb',fmOpenReadWrite);
src.Seek(0,soFromEnd);
src.WriteBuffer(buf,l);
src.Free;
FreeMem(buf);
end;

опять же возвращает ошибку при попытке получения буфера Socket.ReceiveBuf(buf,l); (an istablished connection was aborted by software on your host machine (на разных компах с разными операционками - одно и то же) (10053) щт API 'recv')

тогда как если я получаю в мемористрим через ресивтекст, как написано ниже, всё работает...

var
s, sl: string;
begin
s:= Socket.ReceiveText;
if not Reciving then
begin
SetLength(sl, StrLen(PChar(s))+1); // +1 for the null terminator
StrLCopy(@sl, PChar(s), Length(sl)-1);
DataSize:= StrToInt(sl);
Data:= TMemoryStream.Create;
Delete(s, 1, Length(sl));
Reciving:= true;
end;
try
Data.Write(s, length(s));
if Data.Size = DataSize then
begin
Data.Position:= 0;

data.savetofile('\\server\zakaz\order.mdb');

Data.Free;
Reciving:= false;
Socket.Close;
end;
except
Data.Free;
end;
end;

в принципе, меня второй способ устраивает т.к. гигобайты я получать не собираюсь, но просто даже интересно - в чем я лажанулся с буфферами???

заранее спасибо.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / сокеты не сокетят / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]