Форум: "Сети";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
Вниз"Asynchronous socket error 10061". Найти похожие ветки
← →
vadim1 © (2006-03-23 05:08) [0]Господа! Доброго Вам времени суток!
Заранее прошу прошения за дилетантский вопрос - но уж очень меня с ним "припекло" :)
Использую на 2-х компах ServerSocket и ClientSocket соответственно
Все плпытки установить соединение заканчиваются ошибкой "Asynchronous socket error 10061". Сколько я ни игрался с портами - результат отсутствовал Но стоило мне заменить программы установленные на компах на простенькие примерчики из Help - всё заработало на славу!
В коде бегущем на обоих компах имеется только по одному (!) элементу ClientSocket и ServerSocket и по одному-единственному обращению к ним При этом сам код этих обращений точно такой же как в упомянутых примерах
Что может явится причиной столь удручающего поведения ?
Буду очень признателен за любую помощь
← →
Сергей М. © (2006-03-23 08:06) [1]Приведи свой вариант неработающего кода
← →
vadim14 (2006-03-23 10:32) [2]Сервер:
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;
Казалось бы : куда уж проще?! Так вот - в чистом виде пример работает а как "довесок" к программе в которой повторяю других операций с сетью нет - НИ ВКАКАКУЮ ! :(
← →
vadim14 (2006-03-23 10:38) [3]Sorry! Что-то я с никами запутался! Был Vadim1 а стал почему-то Vadim14! :)
← →
Сергей М. © (2006-03-23 11:06) [4]
> ClientSocket1.Port := 23;
Почему 23-то, когда сервер на самом деле слушает на 1001-м порту ?
Св-во Port и у клиента и у сервера д.б. одинаково !
← →
vadim14 (2006-03-23 12:17) [5]Это опечатка! На самом деле в коде установки правильные,просто перед тем как послать вопрос я очередной раз их пытался менять и меня отвлекли! :) Прошу прощшения,однако проблема,к сожалению,не в этом...
← →
Сергей М. © (2006-03-23 12:42) [6]
> vadim14 (23.03.06 12:17) [5]
Ошибка с кодом 10061 может возникнуть только в случае, если хост доступен, но целевой порт на нем не активен (не открыт).
← →
Сергей М. © (2006-03-23 12:43) [7]Либо если сервер отверг попытку подключения клиента, но это не твой случай.
← →
vadim14 (2006-03-23 13:02) [8]"Ошибка с кодом 10061 может возникнуть только в случае, если хост доступен, но целевой порт на нем не активен (не открыт)."
Так я же перепробовал штук 10 разных портов!
И потом в программе я больше нигде к сети не обращаюсь - то есть вроде как "забивать" порты нечем...
← →
Сергей М. © (2006-03-23 13:19) [9]
> Так я же перепробовал штук 10 разных портов!
Да хоть 10 000 !
Еще раз повторяю : ошибку с кодом 10061 может вернуть только операция коннекта (читай описание кодов отказа ф-ции connect в справке MS WinSock2 Reference или в MSDN), и связана она именно с вышеуказанными условиями !
Ты может св-во Service где-то назначил у сервера или у клиента ?
← →
Сергей М. © (2006-03-23 13:26) [10]
> "забивать" порты
Да и что значит "забивать" ?
← →
vadim14 (2006-03-23 15:57) [11]"Ты может св-во Service где-то назначил у сервера или у клиента "
Да нет
"Да и что значит "забивать" ?"
Ну то есть никто их больше не использует! :)
← →
Сергей М. © (2006-03-23 16:09) [12]
> Ну то есть никто их больше не использует
Если бы их кто-то еще использовал, попытка установить св-во ServerSocket.Active привела бы к исключению.
Раз исключения не было, значит сервер был успешно активизирован на таком-то порту.
Попробуй активировать сервер и подключиться к нему средствами стандартной telnet-консоли:
telnet open 192.168.1.5 номер_того_самого_порта
Успешное подключение в этом случае говорит о "кривизне" твоего клиента.
← →
vadim1 © (2006-03-23 23:08) [13]Telnet не работает,но зато приведённый пример (без собственно программы) отлично "контачит"...
← →
Сергей М. © (2006-03-24 08:17) [14]
> приведённый пример (без собственно программы) отлично "контачит".
Ничего не понял ..
Какой такой "приведенный пример .. контачит" ? Который в [2] ?
Но ты же сам говоришь что он "не контачит" ?
Что за "собственно программа" ?
"Приведенный пример" - это что, не программа ? А что же тогда это ?!
← →
vadim1 © (2006-03-25 21:37) [15]Спасибо за помощь! Я уже разобрался! В программе присутствовал фрагмент который просто перегружал несчатный комп а сеть как раз и послужила индикатором
!
А приведённый код - всего лишь маленькая добавка к этой самой самой проге,коя (добавка :) ) отлично работала - но только сама по себе :)))
Ещё раз большое спасибо!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c