Modbus slave error 10049

Modbus tcp connection failed bind error 10049 Помогите разобраться. Функция bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL, если задаешь любой другой IP-адрес, кроме inet_addr(«127.0.0.1») или адрес машины, на которой запускается приложение inet_addr(«10.7.36.223»); заранее благодарен за помощь От: DOOM Дата: 05.04.07 08:34 Оценка: Здравствуйте, Аноним, Вы писали: А>Функция bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL, если задаешь […]

Содержание

  1. Modbus tcp connection failed bind error 10049
  2. Ошибка Winsock 10049 пытается связать
  3. Решение
  4. Другие решения
  5. winsock: сбой подключения с ошибкой 10049 при использовании localhost (127.0.0.1)
  6. Modbus tcp connection failed bind error 10049

Modbus tcp connection failed bind error 10049

Помогите разобраться.
Функция bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL, если задаешь любой другой IP-адрес, кроме inet_addr(«127.0.0.1») или адрес машины, на которой запускается приложение inet_addr(«10.7.36.223»);

заранее благодарен за помощь

От: DOOM
Дата: 05.04.07 08:34
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Функция bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL, если задаешь любой другой IP-адрес, кроме inet_addr(«127.0.0.1») или адрес машины, на которой запускается приложение inet_addr(«10.7.36.223»);

А ты какой функционал ожидал

От: Аноним
Дата: 05.04.07 08:41
Оценка:

Здравствуйте, DOOM, Вы писали:

DOO>Здравствуйте, Аноним, Вы писали:

А>>Функция bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL, если задаешь любой другой IP-адрес, кроме inet_addr(«127.0.0.1») или адрес машины, на которой запускается приложение inet_addr(«10.7.36.223»);

DOO>А ты какой функционал ожидал

В функции bind надо указывать IP-адрес именно host’а, на котором запускается приложение или INADDR_ANY?
А я хотел в bind’е указать IP-адрес с которым надо устанавливать соединение. Это возможно?

От: Michael Chelnokov
Дата: 05.04.07 08:44
Оценка:

Здравствуйте, Аноним, Вы писали:

А>А я хотел в bind’е указать IP-адрес с которым надо устанавливать соединение. Это возможно?

Нет, для установки соединения существует функция connect.
Функция bind используется для привязки серверного сокета к локальному адресу:порту.

Т.е., сервер делает
socket
bind
listen
accept
read/write
.

Клиент делает
socket
connect
read/write
.

От: Аноним
Дата: 05.04.07 09:40
Оценка:

Здравствуйте, Michael Chelnokov, Вы писали:

MC>Нет, для установки соединения существует функция connect.

connect делает клиент. А мне надо на стороне сервера принять connect от определенного клиента, т.е.определить что его IP-адрес — именно тот, который нужен. А на попытки connect’ов от других клиентов давать отлуп

От: Аноним
Дата: 05.04.07 09:52
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Michael Chelnokov, Вы писали:

MC>>Нет, для установки соединения существует функция connect.

А>connect делает клиент. А мне надо на стороне сервера принять connect от определенного клиента, т.е.определить что его IP-адрес — именно тот, который нужен. А на попытки connect’ов от других клиентов давать отлуп

Понял. В accept’е есть IP-адрес клиента

От: Michael Chelnokov
Дата: 05.04.07 10:10
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Понял. В accept’е есть IP-адрес клиента

Угу. Если вообще не хочется сокет открывать для «левых» клиентов (ведь по возвращению из accept сокет уже открыт), то есть следующие способы:
1. Настроить фильтр на уровне ядра.
2. Использовать WSAAccept (только в Windows).

От: AlexNN
Дата: 06.04.07 05:19
Оценка:

Здравствуйте, Michael Chelnokov, Вы писали:

MC>Здравствуйте, Аноним, Вы писали:

А>>Понял. В accept’е есть IP-адрес клиента

MC>Угу. Если вообще не хочется сокет открывать для «левых» клиентов (ведь по возвращению из accept сокет уже открыт), то есть следующие способы:
MC>1. Настроить фильтр на уровне ядра.
MC>2. Использовать WSAAccept (только в Windows).

А ты ничего не сможешь поделать, у тебя есть открытые порты на компе, ты слушаешь их, если приходит запрос извне на твой порт, волей не волей сокет будет создан, второй вопрос , акцептуешь ли ты его. Так что не парься насчет левых.

От: Michael Chelnokov
Дата: 06.04.07 11:47
Оценка:

Здравствуйте, AlexNN, Вы писали:

ANN>А ты ничего не сможешь поделать,

Извиняюсь, не я, а автор вопроса

ANN>у тебя есть открытые порты на компе, ты слушаешь их, если приходит запрос извне на твой порт, волей не волей сокет будет создан,

Даже в фильтре уровня ядра?

Источник

Ошибка Winsock 10049 пытается связать

У меня проблема с подключением к серверу. При попытке привязать сервер к IP-адресу моего внешнего устройства я получил ошибку winsock: 10049 Невозможно назначить запрошенный адрес. Использование локального сервера работает правильно.
Этот IP-адрес: 192.168.0.202 пинг успешно.
Я работал на win8.1. Я отключил брандмауэр и Windows Defender, и это не помогло.

Решение

bind() Функция используется для указания того, какой адрес серверной системы используется для приема соединений от удаленных клиентов, а не для указания, какому удаленному клиенту разрешено подключаться к серверу. bind() Функция может использоваться только с адресами, которые действительны для самого сервера, но не для адресов удаленных устройств или хостов.

Чтобы определить, какому удаленному хосту разрешено подключаться к вашему серверу, вам необходимо принять подключение и подтвердить удаленный адрес в это время. Если адрес не правильный, соединение закрывается.

В общем, вы хотите использовать INADDR_ANY если ваш сервер не является многодомным (более одного физического подключения к нескольким сетям), и только тогда, если вы пытаетесь ограничить подключения к одной из сетей, к которым подключен ваш сервер.

Другие решения

Winsock возвращает флаг ошибки 10049 (WSAEADDRNOTAVAIL) через свой API WSAGetLastError всякий раз, когда приложение пытается связаться с неверным IP-адресом.

привязка к определенному IP-адресу означает, что всякий раз, когда вы запускаете программу (сервер), адрес должен быть действительным (доступным), но, тем не менее, DHCP выдает вам динамические IP-адреса каждый раз, когда вы отключаете / подключаете адаптер, так что вы адрес, который вы связывали с сервером в прошлый раз недопустимо исправить его, откройте cmd и введите:

вы получите список адресов ip4 / ip6, затем вы можете выбрать один из них и привязать свой сервер, однако этот метод действительно скучный, поэтому альтернативой является привязка к INADDR_ANY так что вы позволяете системе делать работу за вас.

вам нужно только с клиента ввести адрес сервера и порт и подключиться.

Источник

winsock: сбой подключения с ошибкой 10049 при использовании localhost (127.0.0.1)

я написал класс, инкапсулирующий некоторые функции winsock, чтобы имитировать простой сокет TCP для моих нужд.

Когда я пытаюсь запустить простой тест подключения и отправки данных на сервер, «клиент» не выполняет вызов для подключения с кодом ошибки 10049 (WSAEADDRNOTAVAIL) функция подключения на MSDN

Что я делаю (код ниже): Сервер:

  1. Создайте сокет сервера -> Привяжите его к Порт 12345
  2. Переведите сокет в режим прослушивания
  3. Принять вызов

«Клиент»

  1. Создайте сокет -> Привяжите его к случайному порту
  2. Call Connect: подключиться к локальный, порт 12345

=> вызов подключения завершается с ошибкой 10049, как описано выше

Вот основная функция, включая «сервер»:

Функция клиентского потока

Функция подключения

Дополнительная информация: -Incgetaddrinfo — это функциональный объект, инкапсулирующий getaddrinfo. -Ни одна из серверных функций не возвращает никаких ошибок и не работает должным образом при пошаговом прохождении через них с помощью отладчика или при их выполнении в одиночку.

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

Редактировать: Это работает, когда я не делаю подключиться к («localhost»,»12345″) , но в («»,12345) . При рассмотрении процесса разрешения адресов getaddrinfo это дает 127.0.0.1 для «localhost» и мой реальный IP для «»

Источник

Modbus tcp connection failed bind error 10049

Помогите разобраться.
Функция bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL, если задаешь любой другой IP-адрес, кроме inet_addr(«127.0.0.1») или адрес машины, на которой запускается приложение inet_addr(«10.7.36.223»);

заранее благодарен за помощь

От: DOOM
Дата: 05.04.07 08:34
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Функция bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL, если задаешь любой другой IP-адрес, кроме inet_addr(«127.0.0.1») или адрес машины, на которой запускается приложение inet_addr(«10.7.36.223»);

А ты какой функционал ожидал

От: Аноним
Дата: 05.04.07 08:41
Оценка:

Здравствуйте, DOOM, Вы писали:

DOO>Здравствуйте, Аноним, Вы писали:

А>>Функция bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL, если задаешь любой другой IP-адрес, кроме inet_addr(«127.0.0.1») или адрес машины, на которой запускается приложение inet_addr(«10.7.36.223»);

DOO>А ты какой функционал ожидал

В функции bind надо указывать IP-адрес именно host’а, на котором запускается приложение или INADDR_ANY?
А я хотел в bind’е указать IP-адрес с которым надо устанавливать соединение. Это возможно?

От: Michael Chelnokov
Дата: 05.04.07 08:44
Оценка:

Здравствуйте, Аноним, Вы писали:

А>А я хотел в bind’е указать IP-адрес с которым надо устанавливать соединение. Это возможно?

Нет, для установки соединения существует функция connect.
Функция bind используется для привязки серверного сокета к локальному адресу:порту.

Т.е., сервер делает
socket
bind
listen
accept
read/write
.

Клиент делает
socket
connect
read/write
.

От: Аноним
Дата: 05.04.07 09:40
Оценка:

Здравствуйте, Michael Chelnokov, Вы писали:

MC>Нет, для установки соединения существует функция connect.

connect делает клиент. А мне надо на стороне сервера принять connect от определенного клиента, т.е.определить что его IP-адрес — именно тот, который нужен. А на попытки connect’ов от других клиентов давать отлуп

От: Аноним
Дата: 05.04.07 09:52
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Michael Chelnokov, Вы писали:

MC>>Нет, для установки соединения существует функция connect.

А>connect делает клиент. А мне надо на стороне сервера принять connect от определенного клиента, т.е.определить что его IP-адрес — именно тот, который нужен. А на попытки connect’ов от других клиентов давать отлуп

Понял. В accept’е есть IP-адрес клиента

От: Michael Chelnokov
Дата: 05.04.07 10:10
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Понял. В accept’е есть IP-адрес клиента

Угу. Если вообще не хочется сокет открывать для «левых» клиентов (ведь по возвращению из accept сокет уже открыт), то есть следующие способы:
1. Настроить фильтр на уровне ядра.
2. Использовать WSAAccept (только в Windows).

От: AlexNN
Дата: 06.04.07 05:19
Оценка:

Здравствуйте, Michael Chelnokov, Вы писали:

MC>Здравствуйте, Аноним, Вы писали:

А>>Понял. В accept’е есть IP-адрес клиента

MC>Угу. Если вообще не хочется сокет открывать для «левых» клиентов (ведь по возвращению из accept сокет уже открыт), то есть следующие способы:
MC>1. Настроить фильтр на уровне ядра.
MC>2. Использовать WSAAccept (только в Windows).

А ты ничего не сможешь поделать, у тебя есть открытые порты на компе, ты слушаешь их, если приходит запрос извне на твой порт, волей не волей сокет будет создан, второй вопрос , акцептуешь ли ты его. Так что не парься насчет левых.

От: Michael Chelnokov
Дата: 06.04.07 11:47
Оценка:

Здравствуйте, AlexNN, Вы писали:

ANN>А ты ничего не сможешь поделать,

Извиняюсь, не я, а автор вопроса

ANN>у тебя есть открытые порты на компе, ты слушаешь их, если приходит запрос извне на твой порт, волей не волей сокет будет создан,

Даже в фильтре уровня ядра?

Источник


bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL

От: Аноним

 
Дата:  05.04.07 08:28
Оценка:

Привет всем!

Помогите разобраться…
Функция bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL, если задаешь любой другой IP-адрес, кроме inet_addr(«127.0.0.1») или адрес машины, на которой запускается приложение inet_addr(«10.7.36.223»);

int _tmain(int argc, _TCHAR* argv[])
{
    SOCKET _socket;
    unsigned long _IPadress = inet_addr("127.0.0.1");     // или адрес машины на которой запускается приложение inet_addr("10.7.36.223");
    unsigned _port = 2401;
    WORD wVersionRequested;
    WSADATA wsaData;
    wVersionRequested = MAKEWORD( 2, 2 );
    if (WSAStartup( wVersionRequested, &wsaData ))
    {
        return 1;
    }

    WSASetLastError(0);
    if ((_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
    {
        return 1;
    }

    struct sockaddr_in    name;
    memset(&name, 0, sizeof(name));
    name.sin_family = AF_INET;
    name.sin_addr.s_addr = _IPadress;
    name.sin_port = htons(_port);
    int err;
    if (bind(_socket, (struct sockaddr*) &name, sizeof name) == SOCKET_ERROR)
    {
        err = WSAGetLastError();                      // здесь ошибка 10049 - WSAEADDRNOTAVAIL
        closesocket(_socket);
        return 1;
    }
    if (listen(_socket, 4) == SOCKET_ERROR)
    {
        closesocket(_socket);
        return 1;
    }
    _socket = accept(_socket, NULL, NULL);
    err = WSAGetLastError();

    WSACleanup();
    return 0;
}

заранее благодарен за помощь


Re: bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL

От:

DOOM

Россия

 
Дата:  05.04.07 08:34
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Функция bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL, если задаешь любой другой IP-адрес, кроме inet_addr(«127.0.0.1») или адрес машины, на которой запускается приложение inet_addr(«10.7.36.223»);

А ты какой функционал ожидал


Re[2]: bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL

От: Аноним

 
Дата:  05.04.07 08:41
Оценка:

Здравствуйте, DOOM, Вы писали:

DOO>Здравствуйте, Аноним, Вы писали:


А>>Функция bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL, если задаешь любой другой IP-адрес, кроме inet_addr(«127.0.0.1») или адрес машины, на которой запускается приложение inet_addr(«10.7.36.223»);


DOO>А ты какой функционал ожидал

В функции bind надо указывать IP-адрес именно host’а, на котором запускается приложение или INADDR_ANY?
А я хотел в bind’е указать IP-адрес с которым надо устанавливать соединение. Это возможно?


Re[3]: bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL

От:

Michael Chelnokov

Украина

 
Дата:  05.04.07 08:44
Оценка:

Здравствуйте, Аноним, Вы писали:

А>А я хотел в bind’е указать IP-адрес с которым надо устанавливать соединение. Это возможно?

Нет, для установки соединения существует функция connect.
Функция bind используется для привязки серверного сокета к локальному адресу:порту.

Т.е., сервер делает
socket
bind
listen
accept
read/write

Клиент делает
socket
connect
read/write


Re[4]: bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL

От: Аноним

 
Дата:  05.04.07 09:40
Оценка:

Здравствуйте, Michael Chelnokov, Вы писали:

MC>Нет, для установки соединения существует функция connect.

connect делает клиент. А мне надо на стороне сервера принять connect от определенного клиента, т.е.определить что его IP-адрес — именно тот, который нужен. А на попытки connect’ов от других клиентов давать отлуп


Re[5]: bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL

От: Аноним

 
Дата:  05.04.07 09:52
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Michael Chelnokov, Вы писали:


MC>>Нет, для установки соединения существует функция connect.

А>connect делает клиент. А мне надо на стороне сервера принять connect от определенного клиента, т.е.определить что его IP-адрес — именно тот, который нужен. А на попытки connect’ов от других клиентов давать отлуп

Понял. В accept’е есть IP-адрес клиента


Re[6]: bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL

От:

Michael Chelnokov

Украина

 
Дата:  05.04.07 10:10
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Понял. В accept’е есть IP-адрес клиента

Угу. Если вообще не хочется сокет открывать для «левых» клиентов (ведь по возвращению из accept сокет уже открыт), то есть следующие способы:
1. Настроить фильтр на уровне ядра.
2. Использовать WSAAccept (только в Windows).


Re[7]: bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL

От:

AlexNN

 
Дата:  06.04.07 05:19
Оценка:

Здравствуйте, Michael Chelnokov, Вы писали:

MC>Здравствуйте, Аноним, Вы писали:


А>>Понял. В accept’е есть IP-адрес клиента


MC>Угу. Если вообще не хочется сокет открывать для «левых» клиентов (ведь по возвращению из accept сокет уже открыт), то есть следующие способы:

MC>1. Настроить фильтр на уровне ядра.
MC>2. Использовать WSAAccept (только в Windows).

А ты ничего не сможешь поделать, у тебя есть открытые порты на компе, ты слушаешь их, если приходит запрос извне на твой порт, волей не волей сокет будет создан, второй вопрос , акцептуешь ли ты его. Так что не парься насчет левых.

… << RSDN@Home 1.1.4 stable SR1 rev. 568>>


Re[8]: bind возвращает ошибку 10049 — WSAEADDRNOTAVAIL

От:

Michael Chelnokov

Украина

 
Дата:  06.04.07 11:47
Оценка:

Здравствуйте, AlexNN, Вы писали:

ANN>А ты ничего не сможешь поделать,

Извиняюсь, не я, а автор вопроса

ANN>у тебя есть открытые порты на компе, ты слушаешь их, если приходит запрос извне на твой порт, волей не волей сокет будет создан,

Даже в фильтре уровня ядра?

Подождите ...

Wait...

  • Переместить
  • Удалить
  • Выделить ветку

Пока на собственное сообщение не было ответов, его можно удалить.

  • Remove From My Forums
  • Question

  • We’re having an issue trying to add a few internal servers to our POP3 and IMAP IP list on each of our 4 CAS servers.  The POP3 service will not start if I add an IP address.  If I remove the single IP and add «ALL» IP addresses it works. 
    We only want to allow a handfull and not all.

    Event Logs

    Failed to open one or more bindings. The service will be stopped.

    Failed to start listening (Error: 10049). Binding: 10.22.2.111:110.

    I reviewed this technet article, however the IP address that won’t bind from above is not listed in the receive connectors as the technet article states to remove the IP that it can’t bind to.

    http://technet.microsoft.com/en-us/library/dd789669%28EXCHG.80%29.aspx

    Any ideas?

    Thanks


    d

Answers

  • Hi dfunk12,

    The parameter UnencryptedOrTLSBindings(or Binding Tab)  is for local IP address. If you set the value to the local Exchange server IP, you will find it works. Sames as Bindings of Default Web Site. 

    But you want to restrict the remote IP address: «Now we don’t want to enable all IP’s in the company to be able to use POP3 only a select number of IP addresses.»

    About your query, I think you can create a Firewall rule to restrict the connection.

    And workaround: You can disable other account’s POP feature using Set-CasMailbox with parameter
    PopEnabled:$false .


    Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.

    • Proposed as answer by

      Wednesday, February 2, 2011 1:40 AM

    • Marked as answer by
      emma.yoyo
      Thursday, February 3, 2011 1:42 AM

Понравилась статья? Поделить с друзьями:
  • Modbus rtu error codes
  • Modbus poll write error
  • Modbus poll timeout error
  • Modapi ошибка стим закрыт
  • Mod rejections minecraft как исправить