Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Вниз

Sockets. Ошибка при подключении   Найти похожие ветки 

 
P@$l-l0l-(   (2004-10-08 18:29) [0]

Расскажите пожалуйста, как обработать ошибку при подключении клиента к серверу Socket.Open. При подключении к несуществующему адресу выскакивает ошибка. Как сделать проверку или что-то в этом роде?


 
P@$l-l0l-(   (2004-10-08 21:32) [1]

И ещё один вопрос.
Объясните пожалуйста, почему этот код не работает. Кажись всё правильно.

procedure TForm1.FormCreate(Sender: TObject);
begin
 SSocket.Port:=1666;
 SSocket.Active:=true;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 SSocket.Active:=false;
end;

procedure TForm1.SSocketClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 ToSend:=SSocket.Socket.ReceiveText; // Здесь возникает ошибка, как я понял.
end;

procedure TForm1.SSocketClientWrite(Sender: TObject;
 Socket: TCustomWinSocket);
var
 i:integer;
begin
 if ToSend <> "" then
 begin
   for i:=0 to SSocket.Socket.ActiveConnections-1 do
     SSocket.Socket.Connections[i-1].SendText(ToSend);
   ToSend:="";
 end;
end;

end.

Спасибо.


 
Verg ©   (2004-10-08 21:55) [2]

У клиента обрабатывай OnError -
ErrorCode даст тебе номер (код) ошибки, а сам ErrorCode надо занулить.

procedure TForm1.ClientSocket1Error(Sender: TObject;
 Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
 var ErrorCode: Integer);
begin
 // Вместо коментария должны быть действия по логике соответсвующие возникшей ошибке (ErrorEvent)
 if Socket.SocketHandle <> INVALID_SOCKET then
   Socket.Close;
 ErrorCode := 0;
end;

procedure TForm1.SSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
ToSend:=(*SSocket.*)Socket.ReceiveText; // Здесь возникает ошибка, как я понял.
end;

Вот здесь событие ClientRead было вызвано в связи с появлением приятых данных у конкретного сокета, который тебе и передал сервер в параметре Socket : TCustomWinSocket.
Вот у него и читай принятые им данные.


> procedure TForm1.SSocketClientWrite(Sender: TObject;
>  Socket: TCustomWinSocket);
> var
>  i:integer;
> begin
>  if ToSend <> "" then
>  begin
>    for i:=0 to SSocket.Socket.ActiveConnections-1 do
>      SSocket.Socket.Connections[i-1].SendText(ToSend);
>    ToSend:="";
>  end;
> end;


Это вообще неверно.

Событие ClientWrite возникло не у всех активных сокетов, а у одного, конкретного, опять же переданного тебе в параметре Socket: TCustomWinSocket.

Событие это означает, что у сокета вновь появилась возможность передать какую-либо порцию данных в соединение.
А если эта возможность и не пропадала, то соотв. и события этого может и не возникнуть. Хотя один раз оно происходит всегда - после успешного установления соединения.


 
P@$l-l0l-(   (2004-10-09 01:28) [3]

Пасиб, вроде всё понятно. :)



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.036 c
3-1100778813
kaktus
2004-11-18 14:53
2004.12.19
Хранение и обработка данных


4-1099733725
howdo
2004-11-06 12:35
2004.12.19
почему не работает ShowWindow(WHandle, SW_RESTORE) ?


1-1101908075
gek1
2004-12-01 16:34
2004.12.19
ListBox. Скроллинг по горизонтали


8-1096008495
Darkwing
2004-09-24 10:48
2004.12.19
Встроенный в WinXP голос должен заговорить.


1-1102248249
Laymer
2004-12-05 15:04
2004.12.19
Форма позади всего





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский