rGuard

DarkEmpire

誰もいない
Местный
Сообщения
609
Розыгрыши
0
Репутация
302
Реакции
441
Баллы
1 553
сможет кто сделать работу с доменом у ргварда клиент части?
 
К примеру: если вписывать данные в htm и без проверок всё выполнять. обработку пакетов я имел виду на стороне сервер.: )
+ пройдет клешня адаптации под хз что выпилив синхронизацию важных моментов.
 
Код:
u_long getaddressbyname(char* name)
    {
        WSADATA wsaData;
        hostent* remoteHost;

        if (WSAStartup(MAKEWORD(2, 2), &wsaData))
        {
            return -1;
        }

        remoteHost = gethostbyname(name);

        if (remoteHost == NULL)
        {
            int dwError = WSAGetLastError();

            if (dwError != 0)
            {
                switch (dwError)
                {
                    case WSAHOST_NOT_FOUND:
                        //_log->warn("Host not found\n");
                        return -2;
                    case WSANO_DATA:
                        //_log->warn("No data record found\n");
                        return -3;
                }
            }

            return -5;
        }
        else
        {
            return *(u_long *)remoteHost->h_addr_list[0];
        }
    }

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

А дальше используем вот так:
Код:
if (name_in->sin_port == htons(2106))
            {
                long addr = ext::getaddressbyname((char*) hostname);
                if (addr)
                {
                    name_in->sin_addr.S_un.S_addr = addr;
                }
                else
                {
                    name_in->sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

                    switch (addr)
                    {
                        case -1:
                        {
                            _log->warn("WSAStartup failed!\n");
                            break;
                        }
                        case -2:
                        {
                            _log->warn("Host not found!\n");
                            break;
                        }
                        case -3:
                        {
                            _log->warn("No data record found!\n");
                            break;
                        }
                        default:
                        {
                            _log->warn("Unknown error!\n");
                            break;
                        }
                    }
                }
            }

hostname - доменное имя.