Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2011, 15:20   #1
fanatjan
Новичок
Джуниор
 
Регистрация: 04.09.2011
Сообщений: 1
Печаль c++ winsock non-blocking

Помогите. Пожалуйста.
Как этот код на c# napisat в c/c++?
на сколько я понял создается non-blocking i/o socket, c# код нормально работает посылать и получает, а вот в c++ не как, в чем я ошибся??
C# CODE
Код:
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
                         ProtocolType.Udp);
        sock.SetSocketOption(SocketOptionLevel.Socket,
                        SocketOptionName.ReceiveTimeout, 5000);
        IPHostEntry ihe = Dns.Resolve(host);
        IPEndPoint iep = new IPEndPoint(ihe.AddressList[0], 161);
        EndPoint ep = (EndPoint)iep;
        sock.SendTo(packet, snmplen, SocketFlags.None, iep);
 
        //Receive response from packet
        try
        {
            int recv = sock.ReceiveFrom(packet, ref ep);
        }
        catch (SocketException)
        {
            packet[0] = 0xff;
        }
C++ CODE
Код:
if (SOCKET_ERROR == WSAEventSelect(sock, g_hAcceptEvent, FD_READ | FD_WRITE | FD_ACCEPT | FD_CONNECT | FD_CLOSE))
{
printf("\nError occurred while WSAEventSelect().");
WSACloseEvent(g_hAcceptEvent);
return EXIT_FAILURE;
}
//memset(&server, 0, sizeof(sockaddr_in));
server.sin_family = AF_UNIX;
server.sin_addr.s_addr = inet_addr("10.90.90.100");
server.sin_port = htons(PORT);
 
char* ptr2 = reinterpret_cast<char*>(packet);
 int byteSent;
 byteSent = sendto(sock, ptr2,strlen((char*)packet), 0, (struct sockaddr*) &server, sizeof(server));
while(1)
{
WSAEnumNetworkEvents(sock, g_hAcceptEvent, &NetworkEvents);
 
if(FD_READ==NetworkEvents.lNetworkEvents)
{
rc = recv (sock, buf, sizeof(buf), 0);
buf[rc]= (char) NULL;
printf("Received: %s\n", buf);
}
 
printf(" %d \n",NetworkEvents.lNetworkEvents);
 
Sleep(1000);
}
fanatjan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Winsock n3sh C/C++ Сетевое программирование 2 25.07.2010 17:55
WinSock ImmortalAlexSan Работа с сетью в Delphi 7 06.06.2010 22:41
WinSock ImmortalAlexSan Работа с сетью в Delphi 1 11.05.2010 14:42
WinSock profi Win Api 8 11.01.2010 21:13
WinSock Killbrum Win Api 1 18.10.2009 15:15