SOCKETs: accept im Thread



  • Hi,
    ich habe ein Problem mit der accept Funktion die ich in einem Thread aufrufen möchte. Sobald sie aufgerufen wird erhalte ich folgende Fehlermeldung

    Debug Assertion Failed!

    Program: ...sual studio... sprintf.c
    Line: 110

    Expression: (string != NULL)
    ...

    //Server Starten
    
    	WSADATA wsa;
    	WSAStartup(MAKEWORD(2,0),&wsa);
    
    	SOCKADDR_IN addr;
    
    	this->m_accept = socket(AF_INET, SOCK_STREAM, 0);
    
    	if(this->m_accept == INVALID_SOCKET)
    		return -1;
    
    	memset(&addr,0,sizeof(SOCKADDR_IN));
    	addr.sin_family=AF_INET;
    	addr.sin_port=htons(PORT);
    	addr.sin_addr.s_addr=INADDR_ANY;
    
    	if(bind(this->m_accept, (SOCKADDR*)&addr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
    		return -1;
    
    	if(listen(this->m_accept, 10) == SOCKET_ERROR)
    		return -1;
    
    	thread.start((void*)this);
    
     //Der Thread
    DWORD Run(LPVOID arg)
    {
        Server* parent = (Server*)arg;
        SOCKET tmp = 0;
        while(true)
        {			
           tmp = accept(parent->m_accept, NULL, NULL);
           parent->m_connected.push_back(tmp);
        }
    }
    

    Was mache ich falsch? Liegt es an dem Thread?


Anmelden zum Antworten