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

Вниз

WinSock2, ф. Connect   Найти похожие ветки 

 
lead-in   (2007-12-14 13:16) [0]

Привет всем. Пытаюсь вот разобраться с библиотечкой WinSock, функция connect всё время возвращает код ошибки 61 (WSAECONNREFUSED, описание: "The attempt to connect was forcefully rejected"). Мож кто использовал эту функцию, знает как она работает. У меня под рукой статьи разные + книжка Флёнова где есть глава "Сеть на низком уровне", по ним и делаю, мне пока нужно просто соединиться с каким-нить портом, если делать с помощью компонентов, то вроде всё нормально проходит, но хотелось бы хоть немного разобраться в этом...(((


 
Сергей М. ©   (2007-12-14 13:25) [1]


> хотелось бы хоть немного разобраться в этом


Поможем.
Показывай код ..


 
lead-in   (2007-12-14 14:46) [2]

вот отрывочек, WSAstartup перед эти вызывал
=========================
 hSocket := socket(AF_INET, SOCK_STREAM, IPPROTO_IP);

 inet_addr_correct := inet_addr(PChar(edt1.Text));

 SockAddr.sin_addr.S_addr := inet_addr_correct;
 //
 SockAddr.sin_family := AF_INET;
 SockAddr.sin_port := htons(25);
 //
 if connect(hSocket, @SockAddr, sizeof(SockAddr)) = SOCKET_ERROR then
   showmessage(inttostr(WSAGetLastError));


Есть мнение что ф. и не должна в обязательном порядке возваращать какое-либо корректное значение, но когда добавляю вот это:



 res_size := sizeof(res);
 res := 7;
 getsockopt(hSocket, SOL_SOCKET, SO_ERROR, @res, res_size);
 if opt = 0 then showmessage("+") else showmessage("-" + inttostr(opt));



..., то результат всегда res = 0 причём всегда, у Флёнова написано это означает что порт открыт, но нифига же они у меня все не открыты, тоже непонятно

Мож есть у кого ссылка по этой теме, а то Флёнов особо ничего и не рассписывает, MS SDK есть, но с английским туго - ничево практически непонятно....


 
Григорьев Антон ©   (2007-12-14 15:07) [3]

А кто на удалённой стороне 25-ый порт слушает и слушает ли вообще? А файрфолом порт не закрыт?

Если вы только разбираетесь с библиотекой сокетов, для начала попробуйте сами сделатиь и клиент, и сервер, и только потом соединяйтесь с чужими серверами. И первый эксперименты делайте на 127.0.0.1 - локальной машине, чтобы не было проблем с настройкой сети.


 
lead-in   (2007-12-14 15:12) [4]

Суть даже не в том 25 ли порт, открыт он или закрыт (25 вообще-то открыт), не понятно почему получается так как буд-то все порты открыты, а адресс у меня конечно пока 127.0.0.1


 
Сергей М. ©   (2007-12-14 16:45) [5]


> не понятно почему получается так как буд-то все порты открыты


С чего ты это взял ?

При попытке коннекта по тср по такому-то адресу ты получил отлуп - разве это говорит о "все порты открыты" ?


 
lead-in   (2007-12-17 13:37) [6]


> Сергей М. ©   (14.12.07 16:45) [5]


Так написано у Флёнова, а мне ничего не остаётся кроме как верить на слово...(


 
Rouse_ ©   (2007-12-17 13:44) [7]

res_size := sizeof(res);
res := 0;
if getsockopt(hSocket, SOL_SOCKET, SO_ERROR, @res, res_size) = 0 then
  if res = 0 then showmessage("+") else showmessage("-" + inttostr(res));


 
Сергей М. ©   (2007-12-17 14:00) [8]


> Есть мнение что ф. и не должна в обязательном порядке возваращать
> какое-либо корректное значение


Чье мнение ? Твое ? Или Фленова ?
Если твое, то чем оно обосновано ?


 
DiamondShark ©   (2007-12-17 14:35) [9]


> Если твое, то чем оно обосновано ?

Ссылкой на Флёнова, вестимо. А Флёнов -- это такой пророк.


> Так написано у Флёнова, а мне ничего не остаётся кроме как
> верить на слово...(

Т.е. Флёнову на слово ты веришь больше, чем своим глазам?


> getsockopt(hSocket, SOL_SOCKET, SO_ERROR, @res, res_size);
> ..., то результат всегда res = 0


А какой он, по-твоему, должен быть после вызова WSAGetLastError?


 
DiamondShark ©   (2007-12-17 14:47) [10]

Микро-офтоп.


> у Флёнова написано это означает что порт открыт

А что, интересно, в понимании Флёнова означает "порт открыт"?

Код WSAECONNREFUSED означает, что хост доступен, стек TCP/IP на нем работает и ни одного слушающего сокета для заданного адреса:порта на хосте не открыто.

Это "порт открыт" или "порт закрыт"?


 
slow!alfamoon!com   (2007-12-17 14:51) [11]

книжка Флёнова где есть глава "Сеть на низком уровне"

вреднейшая книженция, имхо.
лучше читать MSDN, про сокеты там написано вполне преемлемо. Или, если с английским сложно, можете почитать нормальные статьи (намек - участвующий в обсуждении Антон Григорьев также является автором некоторых интересных статей)


 
slow!alfamoon!com   (2007-12-17 14:53) [12]


> Код WSAECONNREFUSED означает, что хост доступен, стек TCP/IP
> на нем работает и ни одного слушающего сокета для заданного
> адреса:порта на хосте не открыто.
>
> Это "порт открыт" или "порт закрыт"?


разумеется, второе



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

Текущий архив: 2008.10.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
2-1220622285
Demo_nik
2008-09-05 17:44
2008.10.12
Как поределить путь к каталогу в котором нахожусь?


2-1220874482
aaandy21
2008-09-08 15:48
2008.10.12
как связать написанную на Delphi DLL c VC?


2-1220237788
FIL-23
2008-09-01 06:56
2008.10.12
Сортировка масива


2-1220392769
Drone
2008-09-03 01:59
2008.10.12
Выпадающее Меню и другие вопросы


2-1220256443
Q123
2008-09-01 12:07
2008.10.12
Универсальный метод для сортировки масивов.