powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / сокеты не сокетят
5 сообщений из 5, страница 1 из 1
сокеты не сокетят
    #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
сокеты не сокетят
    #32156850
Pat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pat
Гость
>cs.Open; // это ClientSocket
>cs.Socket.SendText('трям');
ПРи посылки сообщения киент еще не приконнектился к серверу.
Напишите cs.Socket.SendText('трям') в обработчике клика другой кнопки, а у этой оставте только cs.Open
...
Рейтинг: 0 / 0
сокеты не сокетят
    #32156854
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
сделал. та же ерунда...

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

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

вообще по-моему в разные кнопки разносить... толк-то какой?
...
Рейтинг: 0 / 0
сокеты не сокетят
    #32156878
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты попробуй чат тот что в демках с дельфями откомпилить и поюзать. Если и он глючит - значит беда с твоим мосдаем или линухом, а может ещё чем-то ...
...
Рейтинг: 0 / 0
сокеты не сокетят
    #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
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / сокеты не сокетят
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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