> Вообще я делаю в отдельном потоке, поэтому посрать на > блокирующие сокеты > А сам я сделал так : > char buf2[0x900]; > int n = 0; > while(n = recv(s, buf2, sizeof(buf2), 0)) > { > if(n == SOCKET_ERROR) > { > return 0; > } > } do {
ioctlsocket(s,FIONREAD,&arg);
char *buf=new char[arg+2];
n=recv(s,buf,arg,0);
*(buf+arg+1)=0; // только изза любви к strcat :))
strcat(charstr,buf); /// выкидываем в volatile buffer или ты будешь
// затирать предыдущий :))
//а здесь я бы послал сообщение основной задаче
// ....ну чтоб результат на ЛИЦО (типа в рожу :)
::PostMessage((HWND)param,WM_PORAUPDATE,0,0);
delete[] buf;
} while( n! = SOCKET_ERROR|n!=0);
не забудь
const WM_PORAUPDATE=WM_USER+100;
если проблема написать обработчик WM_PORAUPDATE
пиши помогем у мя знаний мало но теми что есь поделюсь:))
|