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

Вниз

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 вся ветка

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

Наверх





Память: 0.47 MB
Время: 0.055 c
15-1219126004
vajo
2008-08-19 10:06
2008.10.12
Подскажите с драйвером?


15-1219061215
Dmitry S
2008-08-18 16:06
2008.10.12
Как быстро выполнить операцию?


15-1218227369
Real
2008-08-09 00:29
2008.10.12
Анимация печати от производителя


15-1219407165
keymaster
2008-08-22 16:12
2008.10.12
Приложение падает на Application.Initialize;


15-1219210687
ееееееекенитен
2008-08-20 09:38
2008.10.12
разрезать файл





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