Показать сообщение отдельно

  #5  
Старый 01.02.2010, 23:32
Retimiled
Banned
Регистрация: 24.12.2009
Сообщений: 141
Провел на форуме:
487460

Репутация: 45
По умолчанию

примерно так .... тут многие говорят с дрожью в голосе о неблокируемых сокетах..... дык вот вам откровение от делимитера 8))
Код:
 
s = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
   if (s != INVALID_SOCKET)
  {
     addr.sin_family = AF_INET;
     addr.sin_port   = htons(0);
     addr.sin_addr   = ((sockaddr_in*)(*(DWORD*)&addrlist[4]))->sin_addr;
     if (bind(s, (sockaddr*)&addr, sizeof(addr)) != SOCKET_ERROR)
     {
      #define SIO_RCVALL  0x98000001
   
       DWORD optval = 1;
       int  res = WSAIoctl(s, SIO_RCVALL,&optval, sizeof(optval), 0,0,&bytesret,0,0);
       if (res != SOCKET_ERROR)
       {
	   int err=WSAAsyncSelect(s,hWnd,TCP_READ,FD_ACCEPT|FD_READ|FD_WRITE|FD_CONNECT);
       }
     }
  }


   {
ну и обработчик события TCP_READ
Код:
  if(WSAGETSELECTERROR(lParam))
      break;
  arg=0;
  ioctlsocket(s,FIONREAD,&arg);
  inquire=new char[arg+2];
  len=recv(s,inquire,arg,0);
  ..... извращаемся
 delete[] inquire;
 
Ответить с цитированием