Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача IP с IDC_IPADDRESS1, 'DWORD' to 'const char * 
V
    Опции темы
BIV
Дата 30.10.2012, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

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



Здравствуйте!
Возникли сложности с передачей IP адреса введенный в IDC_IPADDRESS1

Код

DWORD IPAdr; //Глобальная переменная для IP адреса

int connection(char *input, HWND hWnd)
{
............................................
    peer.sin_family = AF_INET;
    peer.sin_port = htons (502);

     peer.sin_addr.s_addr = inet_addr (IPAdr);
//    peer.sin_addr.s_addr = inet_addr ("192.168.1.201"); //С кем соединиться

............................................ 
    return 0;
}

UINT ThreadProc(LPVOID param)  //Создание потоковой функции
 
 {
    connection(" 35 3F 00 00 00 06 01 02 00 00 00 01", (HWND)param);
     return 0;
 }

void CmodbusDlg::OnBnClickedButton2()
{
    IP.GetAddress(IPAdr);
    AfxBeginThread(ThreadProc,GetSafeHwnd()); //Запуск потока
}


Вот ошибка: 'DWORD' to 'const char * где peer.sin_addr.s_addr = inet_addr (IPAdr);

В интернете для решения этой проблемы предлагают
Код

    char * str = new char[17];
    sprintf(str,"%d",IPAdr);

    peer.sin_addr.s_addr = inet_addr (str);


В таком случае ошибок в совместимости не возникают, но адрес неправильно формируется. Подскажите пожалуйста как это преодолеть?

Это сообщение отредактировал(а) BIV - 30.10.2012, 21:11
PM MAIL   Вверх
Dem_max
Дата 31.10.2012, 05:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 1
Всего: 39



inet_addr принимает указатель на строку. А не число.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Dem_max
Дата 31.10.2012, 06:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 1
Всего: 39



http://msdn.microsoft.com/en-us/library/wi...3(v=vs.85).aspx
Как получить строку из DWORD ???
Код

DWORD IP;
wsprintf(str_ip_addr, "%i.%i.%i.%i", (IP & 0xFF), ((IP >> 8) & 0xFF), ((IP >> 16) & 0xFF), ((IP >> 24) & 0xFF)); 


ну или порядок байт в другом порядке, я думаю разберешься.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
BIV
Дата 31.10.2012, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

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



Спасибо большое!

Цитата(Dem_max @  31.10.2012,  04:01 Найти цитируемый пост)
ну или порядок байт в другом порядке, я думаю разберешься.


Да, в другом порядке  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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