socket() & mysql_init() Problem



  • Also ich schreibe an einem Server und dachte MySQL wäre net schlecht für ne Datenbank... leider musste ich festellen dass, wenn ich mysql_init aufrufe....

    Info("		Init...\n");
    
    	if ((conn=mysql_init(NULL))==NULL)
    		Error("			ERROR\n");
    
    	Info("		Connecting...\n");
    
    	if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {
    		Error("			%s\n", mysql_error(conn));
          return;
       }
    	/*...*/
    	ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    	if (ListenSocket == INVALID_SOCKET)
    	{
    		Error("		Error at creating socket\n");
    /*...*/
    

    dann nicht mehr funktioniert !

    wenn ich aber

    ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    	if (ListenSocket == INVALID_SOCKET)
    	{
    		Error("		Error at creating socket\n");
    		/*...*/
    	}
    	/*...*/
    	Info("		Init...\n");
    
    	if ((conn=mysql_init(NULL))==NULL)
    		Error("			ERROR\n");
    
    	Info("		Connecting...\n");
    
    	if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {
    		Error("			%s\n", mysql_error(conn));
          return;
       }
    

    mache dann funktioniert socket();

    Auch wenn es mit der 2. Methode funktioniert ist es nur ein gepfuschter workaround !
    Ich hoffe irgendjemand kann mit sagen wo das Problem liegt .'

    Libs:

    user32.lib kernel32.lib advapi32.lib ws2_32.lib mswsock.lib ole32.lib libmysql.lib
    

    VisualStudio 2005 Express

    Error: (Bei 1. Methode)

    Eine Ausnahme (erste Chance) bei 0x00171060 in HolicEMU.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00171060.
    Unbehandelte Ausnahme bei 0x00171060 in HolicEMU.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00171060.
    


  • Wenn du funktionierenden Code für MySQL möchtest dann schaue mal in der FAQ.
    Habe deine Frage sowieso nicht verstanden.



  • Unix-Tom schrieb:

    Habe deine Frage sowieso nicht verstanden.

    sobalt ich mysql benütze .. funktioniert die funktion socket() von "winsock2.h" nicht mehr ..

    klar genug ?

    Unix-Tom schrieb:

    Wenn du funktionierenden Code für MySQL möchtest dann schaue mal in der FAQ

    MySQL funktioniert.. solange ich socket() nicht benütze

    Das komische dabei ist das

    socket();
    mysql_init();
    

    geht .. aber

    mysql_init();
    socket();
    

    nicht geht



  • Sowas hatte ich noch nie.
    mysql_init reserviert Speicher etc.

    Vermutlich kommt da was durcheinander.
    Hast du schon mal eine Debug gemacht.



  • Ich hab ein Debug probiert... hab aber nichts finden können .. naja ich habe das problem so gelöst .

    /* DUMMY SOCKET */
    closesocket(socket(AF_INET, SOCK_STREAM, IPPROTO_TCP));
    conn=mysql_init(NULL);
    
    /*..*/
    
    ListenSocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    

    So gehts dann .. ist aber trotzdem komisch das ich "socket()" aufrufen muss vor mysql_init().. sonst geht nix mehr .'



  • IMHO ruft ymsql_init auch socket auf. Kann mich aber auch irren.


Log in to reply