Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужна помощь с сокетами [D5, Win95/98]


Gregson ©   (2002-07-25 19:26:00) 

хочу написать подобие почтового клиента, используя компоненту ClientSocket, соединяюсь с сервером, потом посылаю команды, сервер присылает мне ответы, естессно их обрабатывает процедура события OnRead, ответы валются валом и я немогу точно определить на какую мою команду пришел ответ ! как мне поступить, немогу придумать
хотелось бы как то научится распознавать ответы сервера
например что следующая строка +OK 32 12387 это ответ именно на команду stat, а не на авторизацию или еще какую нить ! если не лнь печатать, напишите как !


Anatoly Podgoretsky   (2002-09-26 17:42:00) [1]

Без машины состояний никуда не деться


Ghost.   (2002-09-26 17:29:00) [2]

например при ошибках 500, 501,502,503 сервер соединение не разрывает а предлагает внести изменения. тоесть транзакцию можно продолжить.. а вот при ошибках 550, 552, 554 сервер как правило отвечает поным отказом...


exchoper   (2002-09-26 16:23:00) [3]

что значит не подразумевающий прекращение соединение?
в двух словах:
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 13:30:00) [4]


> exchoper ©

а если придет код ошибки не подразумевающий прекращение соединения тогда как?


exchoper   (2002-09-26 11:56:00) [5]

можно попробовать ставить у сокета ctBlocking тогда все отсылаться и приниматься будет последовательно в одном потоке и проблемы определения на какой запрос пришел ответ стоять не будет


Ghost.   (2002-09-26 10:48:00) [6]

Да придется считать команды..и тока так..


x-mag   (2002-09-25 19:22:00) [7]

Я использую компонент IdTCP и все :)


Зфгд   (2002-09-05 17:37:00) [8]

можно попробовать давать вопросам номера, которые потом и присылать в ответе. Только помнить придется что спрашивал.


Alex Vulpe   (2002-09-04 23:27:00) [9]

Поставь в ответах сам вопрос, например:
user fuck = ОК
stat = КО 32 12387

и т.д.


Gregson   (2002-07-26 11:49:00) [10]

Само собой, я сразу посылаю три команды user fuck, pass fuck, stat!
а как же по другому ?

я спрашиваю по какому алгоритму мне постоить программу чтоб я точно знал на какую мою команду пришел ответ !


Ghost.   (2002-07-26 09:20:00) [11]

Ответы валом валиться немогут никак..если ты не пошлешь стат то хрен он тебе че ответит будет ждать а потом по таймауту соединение разорвет


Наверх

Титульная страница Поиск, карта сайта Написать письмо