Hallo,
bin grad dabei eine Socketklasse zu schreiben und hänge derzeitig an meiner recv-Funktion fest. Unzwar sollen die Daten nur dann empfangen werden wenn auch wirklich Daten gesendet wurden, damit die recv-Funktion nicht das ganze Programm zum Stoppen bringt. Das ganze versuche ich mit Hilfe von select() zu lösen nur leider gibt mir recv() immer -1 aus, und WSAGetLastError() gibt mir den Fehlercode 10045 aus, was so viel bedeutet wie eine nicht unterstützte Operation. Nur leider habe ich keine Ahnung, welche Operation da gemeint ist.
So, das ist jetzt nur mal ein Ausschnitt vom betroffenen Code.
Ich hoffe ihr könnt mir da weiterhelfen
.
Gruß
cesupa
bin grad dabei eine Socketklasse zu schreiben und hänge derzeitig an meiner recv-Funktion fest. Unzwar sollen die Daten nur dann empfangen werden wenn auch wirklich Daten gesendet wurden, damit die recv-Funktion nicht das ganze Programm zum Stoppen bringt. Das ganze versuche ich mit Hilfe von select() zu lösen nur leider gibt mir recv() immer -1 aus, und WSAGetLastError() gibt mir den Fehlercode 10045 aus, was so viel bedeutet wie eine nicht unterstützte Operation. Nur leider habe ich keine Ahnung, welche Operation da gemeint ist.
Code:
bool is=false;
char buf2[1025];
this->recv_bytes=0;
int n=0;
do{
is=false;
if(select(0,&this->fd,NULL,NULL,this->timeout)==SOCKET_ERROR)
{this->error=16;return false;}
if(FD_ISSET(this->c,&this->fd))
{
cout<<"Empfange Daten..."<<endl;
n=recv(this->c,buf2,1023,prot); //Fehler
if(n!=-1)
{
//Anweisungen
}
else
{
cout<<"Fehler: "<<WSAGetLastError()<<endl; //10045
}
}
}while(is && n!=-1);
So, das ist jetzt nur mal ein Ausschnitt vom betroffenen Code.
Ich hoffe ihr könnt mir da weiterhelfen

Gruß
cesupa