Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.06;
Скачать: CL | DM;

Вниз

"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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.048 c
2-1152636048
Xytr@s
2006-07-11 20:40
2006.08.06
сохранение текста в файл в формате Unicode


3-1148979455
Still Swamp
2006-05-30 12:57
2006.08.06
Поделитесь заголовочным файлом для FireBird Embeded


2-1153045450
Dyakon_Frost
2006-07-16 14:24
2006.08.06
Количество записей в Memo или RichEdit


3-1148978355
МЕГАватт
2006-05-30 12:39
2006.08.06
Изменить представление данных в DBGrid


15-1152691078
Еж
2006-07-12 11:57
2006.08.06
Умер основатель Pink Floyd Сид Баррет