Socket klappt nicht



  • hallo, weiß jemand warum dieser code hier

    #include <windows.h>
    #include <fstream>
    #include <iostream>
    #include <string>
    #include <process.h>
    
    using namespace std;
    
    SOCKET connectSocket(SOCKET s, const char* szHostNameOrIp, int port);
    int getAddrFromString(const char* hostnameOrIp, SOCKADDR_IN* addr);
    
    static SOCKET s1, s2, s3;
    char *szAppName = "appname";
    
    void Thread1(PVOID pvoid);
    
    // Einstiegspunkt...
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
    				   PSTR szCmdLine, int iCmdShow)
    {
    	// IP oder Hostname einlesen
    	string string1;
    	ifstream in("lol.xx");
    	if(!in) 
    	{
    	    MessageBox(0, "lol.xx nicht gefunden!", szAppName, MB_ICONERROR);
    	    return 0;
    	}
    	while(!in.eof())
        {
            getline(in, string1);
        }
    	// Verbinden
    	SOCKET testsock;
    	testsock = connectSocket(s1, string1.c_str(), geheimport);
    	if(testsock == SOCKET_ERROR)
    		return 0;
    	testsock = connectSocket(s2, string1.c_str(), geheimport);
    	if(testsock == SOCKET_ERROR)
    		return 0;
    	testsock = connectSocket(s3, string1.c_str(), geheimport);
    	if(testsock == SOCKET_ERROR)
    		return 0;
    	_beginthread (Thread1, 0, 0);
    	while(1)
    	Sleep(50);
    	return 0;
    }
    
    SOCKET connectSocket(SOCKET s, const char* szHostNameOrIp, int port)
    {
    	WSADATA wsa;
    	SOCKADDR_IN addr;
    	int rc;
    	if(WSAStartup(MAKEWORD(2, 0), &wsa) != 0)
    	{
    		return SOCKET_ERROR;
    	}
    	s = socket(AF_INET, SOCK_STREAM, 0);
    	if(s == INVALID_SOCKET) 
    	{
    		return SOCKET_ERROR;
    	}
    	memset(&addr, 0, sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten 
    	addr.sin_family = AF_INET;
    	addr.sin_port = htons(port);
    	rc = getAddrFromString(szHostNameOrIp, &addr);
    	if(rc == SOCKET_ERROR)
    	{
    		return SOCKET_ERROR;
    	}
        if(connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR)) == SOCKET_ERROR) 
    	{
    		return SOCKET_ERROR;
    	}
    	return 0;
    }
    
    int getAddrFromString(const char* hostnameOrIp, SOCKADDR_IN* addr)
    {
        unsigned long ip;
        HOSTENT* he;
        if(hostnameOrIp==NULL || addr==NULL) /* Parameter prüfen */
    	   	return SOCKET_ERROR;
        ip = inet_addr(hostnameOrIp); /* eine IP in hostnameOrIp ? */
    	if(ip != INADDR_NONE) /* bei einem fehler liefert inet_addr den Rückgabewert INADDR_NONE */
        {
    		addr->sin_addr.s_addr = ip;
    		return 0;
        }
        else
        {
    		he = gethostbyname(hostnameOrIp); /* Hostname in hostnameOrIp auflösen */
    		if(he == NULL)
    		{
    	   		return SOCKET_ERROR;
    		}
    		else
    			memcpy(&(addr->sin_addr),he->h_addr_list[0],4); /*die 4 Bytes der IP von he nach addr kopieren */
    	}
        return 0;
    }
    
    void Thread1(PVOID pvoid)
    {
    	char format[10];
    	char lool[100];
        recv(s1, format, sizeof(format), 0);  // FUnktioniert nicht 
    	sprintf(lool, "%d", WSAGetLastError()); // WSA error 10038
    	MessageBox(0, lool, lool, 0);
    	_endthread () ;
    }
    

    Socket operation on nonsocket.

    An operation was attempted on something that is not a socket. Either the socket handle parameter did not reference a valid socket, or for select, a member of an fd_set was not valid.

    was heißt das jetzt genau?
    Danke!



  • du müsstest schon die Addresse übergeben:

    SOCKET connectSocket(SOCKET &s, const char* szHostNameOrIp, int port);
    


  • Melan schrieb:

    du müsstest schon die Addresse übergeben:

    SOCKET connectSocket(SOCKET &s, const char* szHostNameOrIp, int port);
    

    wat?lol!

    @threadersteller. GetLastError(). wir gucken hier doch nicht zeile für zeile deinen müll code durch. 👎



  • ascda schrieb:

    Melan schrieb:

    du müsstest schon die Addresse übergeben:

    SOCKET connectSocket(SOCKET &s, const char* szHostNameOrIp, int port);
    

    wat?lol!

    @threadersteller. GetLastError(). wir gucken hier doch nicht zeile für zeile deinen müll code durch. 👎

    hat er doch... 😮



  • danke Melan! habe das & hinzugefügt und jetz funzt es 🙂



  • ascda schrieb:

    wat?lol!
    @threadersteller. GetLastError(). wir gucken hier doch nicht zeile für zeile deinen müll code durch. 👎

    was bist du den für ein kiddi wtf erst lesen dann denken dann schreiben und nicht erst schreiben rofl



  • ascda schrieb:

    wir gucken hier doch nicht zeile für zeile deinen müll code durch. 👎

    und was fällt dir ein einfach nen code als müllcode zu bezeichenen den du nichtmal verstehst? alda falda



  • lol was isn hier los. ich gucke mir den code gar nicht erst an, wenn ihn mir jemand so für die füße klatscht und sagt: mach mal. so nicht. das mache ich nicht. 👎



  • @ascda rofler inf.stundet
    du arme Wurst


Anmelden zum Antworten