Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Socket struct - error


Автор: Enelar 30.11.2008, 18:13
Решил тряхнуть стариной. Благо распечатка прошлого кода осталась.
Код точно рабочий, полностью переписал.
Клюючевой момент
Код

sockaddr_in local_addr;

Код

local_addr.sin_family = AF_INET;
  local_addr.sin_port = 55555;
  local_addr.sin_addr.S_un.S_addr = INADDR_ANY;
 if (bind(local, (sockaddr *)&local_addr, sizeof(local_addr)) != 0)
  {
      MessageBox(NULL, "Error open port, maybe 55555 port using", "Error", MB_ICONERROR | MB_OK);
    return 0;
  }


Код

error C2664: bind: невозможно преобразовать параметр 2 из 'sockaddr_in *' в 'const sockaddr *'
        Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции


Код был точно рабочас я помню. Переписал правильно... Минут 30 извращался, больше идей нет smile 

Автор: Олег2005 1.12.2008, 19:55
Попробуйте 
local_addr.sin_port = htons(55555);
  и  (SOCKADDR*)

Автор: SVN74 1.12.2008, 21:43
Local_Addr2.sin_family = AF_INET;
Local_Addr2.sin_port = htons(55555);
Local_Addr2.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(ServerSocket,( sockaddr *)&Local_Addr2,sizeof(Local_Addr2))==SOCKET_ERROR)
{
////////
}

Автор: Олег2005 1.12.2008, 22:18
Ну и?
Та же ошибка?
Я вам предлагал:
if(bind(ServerSocket,(SOCKADDR*)&Local_Addr2,sizeof(Local_Addr2))==SOCKET_ERROR)
Для INADDR_ANY        htonl() не нужен

Автор: SVN74 1.12.2008, 23:05
 Local_Addr2.sin_addr.s_addr = 0;

Цитата

Для INADDR_ANY        htonl() не нужен

Это не нужно, если не устанавливать определенный адрес...

Автор: Олег2005 2.12.2008, 11:58
Цитата(SVN74 @  1.12.2008,  22:05 Найти цитируемый пост)
Это не нужно, если не устанавливать определенный адрес...

А кто утверждает обратное?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)