
01.02.2010, 23:32
|
|
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;
|
|
|