Re[2]: Перенаправлени stdio дочернего процесса на сокеты + L
От: Andrew S Россия http://alchemy-lab.com
Дата: 19.07.05 19:32
Оценка: 12 (2)
Гм, вот корректный вариант.
SOCKET ifs_socket(int af, int type, int protocol) 
{ 
    unsigned long proto_buffers_len = 4096; 
    SOCKET out = INVALID_SOCKET;
    int nProtocols[] = {protocol, 0};
    WSAPROTOCOL_INFO *pInfo = NULL;
    while ((pInfo = (WSAPROTOCOL_INFO *)realloc(pInfo, proto_buffers_len))) 
    {
        int nResult = ::WSAEnumProtocols(nProtocols, pInfo, &proto_buffers_len);
        if (nResult != SOCKET_ERROR)
        {
            for (int i = 0; i < nResult; ++i) 
                if (
                    ((af == AF_UNSPEC) || (af == pInfo[i].iAddressFamily)) &&
                    (type == pInfo[i].iSocketType) &&
                    (pInfo[i].dwServiceFlags1 & XP1_IFS_HANDLES)
                   )
                {
                    out = ::WSASocket(af, type, protocol, &pInfo[i], 0, 0); 
                    break; 
                }
            break;
        } 
        if (::WSAGetLastError() != WSAENOBUFS)
            break;
    } 
    free(pInfo);
    return out; 
}
http://www.rusyaz.ru/pr — стараемся писАть по-русски
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.