Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.007 c
1-69332
Comp
2002-11-12 19:54
2002.11.21
И ещё...


14-69487
blackweber
2002-11-05 00:50
2002.11.21
GUID


4-69648
chsv
2002-10-09 19:19
2002.11.21
неприятное мерцание экрана при изменении положения окон SDI прило


14-69527
Ate
2002-11-01 18:23
2002.11.21
Каменный эдитор


3-69124
Ryser
2002-11-04 11:26
2002.11.21
Выделение цветом определенной строки в DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский