Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сокет, коннект, еррор 10061 
V
    Опции темы
Cashey
  Дата 6.5.2008, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



пытаюсь послать сообщение через сокет. делаю так:
Код

    WSAStartup($101,Data);
    Soc:=Socket(AF_Inet,Sock_Stream,0);
    if (Soc = INVALID_SOCKET) then begin
      showmessage('Socket() failed: '+IntToStr(WSAGetLastError));
      exit;
    end;
    Addr.sin_family:=PF_Inet;
    Addr.sin_port:=HToNS(5050);
    Addr.sin_addr.S_addr:= inet_addr('xxx.xxx.xxx.xxx'); //('127.0.0.1');
    FillChar(Addr.Sin_Zero,SizeOf(Addr.Sin_Zero),0);
    Len:=SizeOf(TSockAddr);
    if connect(Soc,Addr,Len) <> 0 then begin
      cErr := WSAGetLastError;
      showmessage(inttostr(cErr))  ;
    end;

если  Addr.sin_addr.S_addr присваивается значение '127.0.0.1', то работает, но если подставляю всесто него IP адрес машины в локальной сети, то и при запуске на этой машине, и при запуске с другой возвращается ошибка 10061.

пытался сделать по другому:
Код

  ClientSocket1.Host := '127.0.0.1';
  ClientSocket1.Port := 5050;
  ClientSocket1.Open;

та же самая ошибка, но уже и с локальным IP.
Используется Delphi 6.
Ну и логичный вопрос - что делать?


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
ama_kid
Дата 6.5.2008, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: нет
Всего: 95



Cashey, если ты имеешь ввиду то, о чем мы вчера разговаривали - то я тут сообразил щас, что в контексте той задачи, которую ты описывал, ситуация должна быть немного иной: "серверный" сокет должен поднимать клиент, а сервер - должен открывать соединение и подсоединяться к нему (т.е. наоборот по отношению к тому, как я тебе показывал пример).  Попробуй сделать так, если что - я через пару часов освобожусь и попробую помочь...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Cashey
Дата 6.5.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



ama_kid, да, это как раз развитие вчерашней темы.
твой вчерашний пример работает на одной машине, но если серверную часть перенести на другой комп и поменять IP адрес, то вылетает ошибка 10061. или даже если на одной машине смотреть, то все равно если IP не локальный, а сетевой то выдает ошибку.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Cashey
Дата 6.5.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



я так понимаю.... та часть, что стоит у клиента должна опрашивать свой локальный порт, т.е. для нее будет верно 
Код

    Addr.sin_port:=HToNS(5050);
    Addr.sin_addr.S_addr:=inet_addr('127.0.0.1');

а вот та часть, которая должна послать сообщение клиентской должна стучатся по ее сетевому адресу, т.е. как я и написал
Код
    
    Addr.sin_port:=HToNS(5050);
    Addr.sin_addr.S_addr:= inet_addr('xxx.xxx.xxx.xxx');

а дальше я так понял надо поменять местами

Bind() и Listen() с connect() так?


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
ama_kid
Дата 6.5.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: нет
Всего: 95



Cashey, тьфу, я уже загнался smile У меня ремонт дома, так что иногда могу нести пургу, извиняй... smile
В общем, щас посмотрел, что я тебе вчера написал в том примере - оказывается все правильно. Ключевой момент в том, что клиент - должен сажаться на свой собственный реальный IP-адрес (не 127.0.0.1, а тот, который имеет в сети). А сервер должен на этот адрес слать данные... Только что проверил у себя на виртуальной машине - все заработало...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Cashey
Дата 6.5.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(ama_kid @  6.5.2008,  15:12 Найти цитируемый пост)
клиент - должен сажаться на свой собственный реальный IP-адрес (не 127.0.0.1, а тот, который имеет в сети). А сервер должен на этот адрес слать данные

вроде разобрался. я с самого начало так и сделал. но так как я поместил серверную часть на машину не в домене, то она отказывалась соединятся до авторизации. а проверять на ошибку я стал уже после того, как вернул на клиенте IP локальный и тогда он мне возвращал ошибку 10061. сейчас проверил после авторизации и все заработало. уря smile


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.