![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"Asynchronous socket error 10061".
vadim1 © (2006-03-23 05:08:00)Господа! Доброго Вам времени суток!
Заранее прошу прошения за дилетантский вопрос - но уж очень меня с ним "припекло" :)
Использую на 2-х компах ServerSocket и ClientSocket соответственно
Все плпытки установить соединение заканчиваются ошибкой "Asynchronous socket error 10061". Сколько я ни игрался с портами - результат отсутствовал Но стоило мне заменить программы установленные на компах на простенькие примерчики из Help - всё заработало на славу!
В коде бегущем на обоих компах имеется только по одному (!) элементу ClientSocket и ServerSocket и по одному-единственному обращению к ним При этом сам код этих обращений точно такой же как в упомянутых примерах
Что может явится причиной столь удручающего поведения ?
Буду очень признателен за любую помощь
vadim1 (2006-03-25 21:37:00) [1]Спасибо за помощь! Я уже разобрался! В программе присутствовал фрагмент который просто перегружал несчатный комп а сеть как раз и послужила индикатором
!
А приведённый код - всего лишь маленькая добавка к этой самой самой проге,коя (добавка :) ) отлично работала - но только сама по себе :)))
Ещё раз большое спасибо!
Сергей М. (2006-03-24 08:17:00) [2]
> приведённый пример (без собственно программы) отлично "контачит".
Ничего не понял ..
Какой такой "приведенный пример .. контачит" ? Который в [2] ?
Но ты же сам говоришь что он "не контачит" ?
Что за "собственно программа" ?
"Приведенный пример" - это что, не программа ? А что же тогда это ?!
vadim1 (2006-03-23 23:08:00) [3]Telnet не работает,но зато приведённый пример (без собственно программы) отлично "контачит"...
Сергей М. (2006-03-23 16:09:00) [4]
> Ну то есть никто их больше не использует
Если бы их кто-то еще использовал, попытка установить св-во ServerSocket.Active привела бы к исключению.
Раз исключения не было, значит сервер был успешно активизирован на таком-то порту.
Попробуй активировать сервер и подключиться к нему средствами стандартной telnet-консоли:
telnet open 192.168.1.5 номер_того_самого_порта
Успешное подключение в этом случае говорит о "кривизне" твоего клиента.
vadim14 (2006-03-23 15:57:00) [5]"Ты может св-во Service где-то назначил у сервера или у клиента "
Да нет
"Да и что значит "забивать" ?"
Ну то есть никто их больше не использует! :)
Сергей М. (2006-03-23 13:26:00) [6]
> "забивать" порты
Да и что значит "забивать" ?
Сергей М. (2006-03-23 13:19:00) [7]
> Так я же перепробовал штук 10 разных портов!
Да хоть 10 000 !
Еще раз повторяю : ошибку с кодом 10061 может вернуть только операция коннекта (читай описание кодов отказа ф-ции connect в справке MS WinSock2 Reference или в MSDN), и связана она именно с вышеуказанными условиями !
Ты может св-во Service где-то назначил у сервера или у клиента ?
vadim14 (2006-03-23 13:02:00) [8]"Ошибка с кодом 10061 может возникнуть только в случае, если хост доступен, но целевой порт на нем не активен (не открыт)."
Так я же перепробовал штук 10 разных портов!
И потом в программе я больше нигде к сети не обращаюсь - то есть вроде как "забивать" порты нечем...
Сергей М. (2006-03-23 12:43:00) [9]Либо если сервер отверг попытку подключения клиента, но это не твой случай.
Сергей М. (2006-03-23 12:42:00) [10]
> vadim14 (23.03.06 12:17) [5]
Ошибка с кодом 10061 может возникнуть тольков случае, если хост доступен, но целевой порт на нем не активен (не открыт).
vadim14 (2006-03-23 12:17:00) [11]Это опечатка! На самом деле в коде установки правильные,просто перед тем как послать вопрос я очередной раз их пытался менять и меня отвлекли! :) Прошу прощшения,однако проблема,к сожалению,не в этом...
Сергей М. (2006-03-23 11:06:00) [12]
> ClientSocket1.Port := 23;
Почему 23-то, когда сервер на самом деле слушает на 1001-м порту ?
Св-во Port и у клиента и у сервера д.б. одинаково !
vadim14 (2006-03-23 10:38:00) [13]Sorry! Что-то я с никами запутался! Был Vadim1 а стал почему-то Vadim14! :)
vadim14 (2006-03-23 10:32:00) [14]Сервер:
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Port := 1001;//чёрт знает ,сколько портов перепробовал!
ServerSocket1.Active := TRUE;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Edit1.Text := Socket.ReceiveText;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ServerSocket1.Close;
end;
Клиент:
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientSocket1.Port := 23;
ClientSocket1.Host := '192.168.1.5; //испробовал и имя Хоста тоже!
ClientSocket1.Active := true;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ClientSocket1.Active := false;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if ClientSocket1.Active then
ClientSocket1.Socket.SendText(Edit1.Text);
end;
Казалось бы : куда уж проще?! Так вот - в чистом виде пример работает а как "довесок" к программе в которой повторяю других операций с сетью нет - НИ ВКАКАКУЮ ! :(
Сергей М. (2006-03-23 08:06:00) [15]Приведи свой вариант неработающего кода