IP из SOCKET
От: Network  
Дата: 24.05.02 13:54
Оценка:
Здравствуйте!
У меня такая проблема :
Есть у меня приложение сервер, когда к нему подключаются там происходят стандартные действия.... И в конце концов, после связи получается переменная SOCKET типа, как из этой переменной получить IP клиента, подключившегося к серверу.......
Я думал , может через SOCKADDR_IN , но у меня как-то не получилось, может кто знает ответ на этот вопрос?....
Re: IP из SOCKET
От: TepMuHyc  
Дата: 24.05.02 14:07
Оценка:
Здравствуйте Network, Вы писали:

N>Здравствуйте!

N>У меня такая проблема :
N>Есть у меня приложение сервер, когда к нему подключаются там происходят стандартные действия.... И в конце концов, после связи получается переменная SOCKET типа, как из этой переменной получить IP клиента, подключившегося к серверу.......
N>Я думал , может через SOCKADDR_IN , но у меня как-то не получилось, может кто знает ответ на этот вопрос?....

getpeername() — вот что тебе поможет
____________________
God obviously didn't debug, hasn't done any maintenance, and no documentation can be found. Truly amateur work.
Re: IP из SOCKET
От: Gosha Украина  
Дата: 24.05.02 20:29
Оценка:
Здравствуйте Network, Вы писали:

N>Здравствуйте!

N>У меня такая проблема :
N>Есть у меня приложение сервер, когда к нему подключаются там происходят стандартные действия.... И в конце концов, после связи получается переменная SOCKET типа, как из этой переменной получить IP клиента, подключившегося к серверу.......

Функция ниже заполняет свои параметры данными о хосте, с которым было установлено соединение (data_socket вернулся после connect() или accept())
int SockConn::GetRemoteProps(char * host, char * ipAddress,int & port)
{
    LPHOSTENT phostent;
    SOCKADDR_IN localAddr;
    int res,size;
    char * ipAddr;
    unsigned long inaddr;

    size=sizeof(SOCKADDR_IN);
    res=getpeername(data_socket,(SOCKADDR*)&localAddr,&size);

    if (res==SOCKET_ERROR)
        return WSAGetLastError(); 

    ipAddr=inet_ntoa(localAddr.sin_addr);
    inaddr=inet_addr(ipAddr);
    phostent=gethostbyaddr((char*)&inaddr,4,AF_INET);
    if (phostent==NULL)
            return WSAGetLastError();

    strcpy(host,phostent->h_name);
    strcpy(ipAddress,ipAddr);
    port=htons(localAddr.sin_port);

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