Форум: "Сети";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизIdTCPClient&IdTCPServer VS ServerSocket&ClientSocket Найти похожие ветки
← →
MetalFan © (2004-07-27 10:16) [0]что лучше использовать? что надежнее работает?
← →
Reindeer Moss Eater © (2004-07-27 10:21) [1]Какой ряд кресел в самолете летит надежнее?
Левый или правый?
← →
Digitman © (2004-07-27 10:24) [2]
> что лучше использовать?
это решать только тебе, все зависит от конкретного применения
> что надежнее работает?
оба набора компонентов используют протокол TCP/IP, так что вопрос о "надежности" компонентов сводится к вопросу о надежности протокола TCP/IP, а таковой вообще не ставится, ибо этот протокол специально разработан для обеспечения гарантированной доставки сообщений
← →
MetalFan © (2004-07-27 10:32) [3]хорошо) у меня с Indy такая проблема:
в примерах чата на основе Indy TCP Server/Client
если при подсоединненых клиентах попытаться остановить сервер, то вываливает ошибку: Project XXX raised exception class EIdSocketError with message "Socket Error #10038 Socket operation on non-socket..." не пойму из-за чего!
← →
Reindeer Moss Eater © (2004-07-27 10:34) [4]не пойму из-за чего!
Неужели до сих пор не понял?
Эта ошибка из за того, что :
если при подсоединненых клиентах попытаться остановить сервер
← →
MetalFan © (2004-07-27 10:36) [5]т.о. их надо сначала отключить?
← →
Reindeer Moss Eater © (2004-07-27 10:37) [6]Зачем?
Сервер волен остановиться когде ему захочется.
← →
MetalFan © (2004-07-27 10:50) [7]а что тогда с ошибкой делать? просто try..except?
← →
Digitman © (2004-07-27 11:14) [8]
> MetalFan © (27.07.04 10:50) [7]
> а что тогда с ошибкой делать?
искать ее причину и устранять
← →
Reindeer Moss Eater © (2004-07-27 11:17) [9]а что тогда с ошибкой делать? просто try..except?
Надо просто понять, что исключения - это не досадные особенности микросхем из которых сделаны компьютеры.
Это (в данном случае) - средство помогающее разработчику компонента сообщить простым и дешевым способом пользователю компонента о том, что что-то произошло. В данном случае - закрытие TCP соединения.
← →
MetalFan © (2004-07-27 11:32) [10]попробую описать подробнее, может кто поможет:
есть IdTCPServer у него обработчики событий:
TServer.OnDisconnect(AThread: TIdPeerThread);
begin
if assigned(FClients) then
DoRefreshClients;
end;
...
TServer.OnExecute(AThread: TIdPeerThread);
var
FMess: string;
begin
FMess := AThread.Connection.ReadLn("", 200); <=здесь выдает ошибку
if (trim(FMess) <> "")
begin
DoBroadCastMessage(FMess + ": " + AThread.Connection.Binding.PeerIP);
end;
end
при установке серверу Active:= false;
а указанном месте выдает вышеупомянутую ошибку и только потом попадает в OnDisconnect...
← →
Reindeer Moss Eater © (2004-07-27 11:34) [11]FMess := AThread.Connection.ReadLn("", 200); <=здесь выдает ошибку
И это по твоему неправильно?
А как по твоему правильно должно быть?
Сервер погасили, а он как ни в чем ни бывало продолжает выполнять ReadLn и может быть даже получает полезные данные от клиентов?
Так что ли?
← →
MetalFan © (2004-07-27 11:52) [12]что-то я совсем запутался! а какой модет быть выход из этой ситуации?
← →
Digitman © (2004-07-27 12:02) [13]
> MetalFan © (27.07.04 11:52) [12]
в дан.ситуации одним из выходов и будет заключение ReadLn в блок try..except
Но ! ситуация-то прояснилась лишь ПОСЛЕ того, как ты привел КОНКРЕТНЫЙ код ! ... так стоило ли делать столько бесполезных постов ? да еще и бросать зерно сомнения в огород "надежности" компонентов ?
← →
MetalFan © (2004-07-27 12:10) [14]сорри за неверный подход к проблеме!
всем спасибо за помощь!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.047 c