Форум: "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