Форум: "Сети";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
ВнизНужна помощь с сокетами Найти похожие ветки
← →
Gregson (2002-07-25 19:26) [0]хочу написать подобие почтового клиента, используя компоненту ClientSocket, соединяюсь с сервером, потом посылаю команды, сервер присылает мне ответы, естессно их обрабатывает процедура события OnRead, ответы валются валом и я немогу точно определить на какую мою команду пришел ответ ! как мне поступить, немогу придумать
хотелось бы как то научится распознавать ответы сервера
например что следующая строка +OK 32 12387 это ответ именно на команду stat, а не на авторизацию или еще какую нить ! если не лнь печатать, напишите как !
← →
Ghost. (2002-07-26 09:20) [1]Ответы валом валиться немогут никак..если ты не пошлешь стат то хрен он тебе че ответит будет ждать а потом по таймауту соединение разорвет
← →
Gregson (2002-07-26 11:49) [2]Само собой, я сразу посылаю три команды user fuck, pass fuck, stat!
а как же по другому ?
я спрашиваю по какому алгоритму мне постоить программу чтоб я точно знал на какую мою команду пришел ответ !
← →
Alex Vulpe (2002-09-04 23:27) [3]Поставь в ответах сам вопрос, например:
user fuck = ОК
stat = КО 32 12387
и т.д.
← →
Зфгд (2002-09-05 17:37) [4]можно попробовать давать вопросам номера, которые потом и присылать в ответе. Только помнить придется что спрашивал.
← →
x-mag (2002-09-25 19:22) [5]Я использую компонент IdTCP и все :)
← →
Ghost. (2002-09-26 10:48) [6]Да придется считать команды..и тока так..
← →
exchoper (2002-09-26 11:56) [7]можно попробовать ставить у сокета ctBlocking тогда все отсылаться и приниматься будет последовательно в одном потоке и проблемы определения на какой запрос пришел ответ стоять не будет
← →
Ghost. (2002-09-26 13:30) [8]
> exchoper ©
а если придет код ошибки не подразумевающий прекращение соединения тогда как?
← →
exchoper (2002-09-26 16:23) [9]что значит не подразумевающий прекращение соединение?
в двух словах:
try
ClientSocket.Active:=TRUE;
try
ClientSocket.Socket.SendBuf(Data, len);
ClientSocket.Socket.ReceiveBuf(Data, len);
finally
ClientSocket.Active:=FALSE;
end;
except
on E:Exception do begin .... end;
end;
в деле все будет сложнее, это костяк, там еще кучу всего контролировать надо, а если случилась ошибка, при установке соединения, приеме или отправке буфера, то тут уже нужно путаться все заного проделать или сказать что траблы с соединением...
← →
Ghost. (2002-09-26 17:29) [10]например при ошибках 500, 501,502,503 сервер соединение не разрывает а предлагает внести изменения. тоесть транзакцию можно продолжить.. а вот при ошибках 550, 552, 554 сервер как правило отвечает поным отказом...
← →
Anatoly Podgoretsky (2002-09-26 17:42) [11]Без машины состояний никуда не деться
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.013 c