Hi leute so nah am ziel ^^



  • also ich habe lange nachgesucht und jetzt hab ich nen code gefunden der
    mir nur noch einen error zeigt ->

    #include <iostream>
    #include <stdio.h>
    #include <conio.h>
    #include <winsock2.h>
    
    using namespace std;
    
    //Prototypen
    int startWinsock(void);
    
    int main()
    {
    long rc;
    SOCKADDR_IN addr;
    SOCKET acceptSocket;
    SOCKET connectedSocket;
    
    //WINSOCK STARTEN
    rc=startWinsock();
    
    if(rc!=0)
    {
    printf("Fehler: StartWinsock, fehlerhaft rc=%d \n",rc);
    return 1;
    }
    else
    {
    printf("\nWinsock gestartet!\n");
    }
    
    //SOCKET ERSTELLEN
    acceptSocket=socket(AF_INET,SOCK_STREAM,0);
    if(acceptSocket==INVALID_SOCKET)
    {
    printf("Fehler: Der Socket konnte nicht erstellt werden. FCODE:%d\n",WSAGetLastError());
    return 1;
    }
    else
    {
    printf("\nSocket erfolgreich erstellt!!!\n");
    }
    memset(&addr,0,sizeof(SOCKADDR_IN));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(12345);
    addr.sin_addr.s_addr=ADDR_ANY;
    rc=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKA DDR_IN));
    if(rc==SOCKET_ERROR)
    {
    printf("Fehler: bind, FCODE:%d\n",WSAGetLastError());
    return 1;
    }
    else
    {
    printf("\nSocket an port 12345 erfolgreich gebunden\n");
    }
    
    rc=listen(acceptSocket,10);
    if(rc==SOCKET_ERROR)
    {
    printf("Fehler: listen, FCODE:%d",WSAGetLastError());
    return 1;
    }
    
    else
    {
    printf("\nacceptSocket ist im listen Modus...\n");
    }
    
    connectedSocket=accept(acceptSocket,NULL,NULL);
    if(connectedSocket==INVALID_SOCKET)
    {
    printf("Fehler: accept, FCODE:%d",WSAGetLastError());
    return 1;
    }
    else
    {
    printf("\nNeue Verbindung wurde akzeptiert!\n");
    }
    
    return 0;
    }
    
    int startWinsock()
    {
    WSADATA wsa;
    return WSAStartup(MAKEWORD(2,0),&wsa);
    }
    

    der error ist in dieser line

    rc=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKA DDR_IN));
    

    SOCKA DDR_IN soll nich definiert sein... aba wie soll ich es denn definieren ?



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • SOCKA DDR_IN

    HAHA... da ist doch ein Leerzeichen drin...
    Simon



  • Ja ok... wo der witz ist versteh ich nich 😕 aba
    egal
    dann bekomm ich die ganzen errors undefinied symbol getwsaerror und wie se alle heißen



  • Bearfist schrieb:

    die ganzen errors undefinied symbol getwsaerror

    More input



  • vermutlich meint er die linker-fehlermeldungen, da er die lib nicht mitgelinkt hat!?



  • Als unter Visual Studio musst du z.B. "ws2_32.lib" linken.



  • Erst Server starten dann Client.

    Dann gibtst du beim Client ein 127.0.0.1 und schon bist du verbunden

    kannst ja danach z.b. mal zum test eingeben calc.exe

    oder mspaint.exe.

    Ich glaub das .exe kannste auch weglassen ich kann es gerade nicht test ...

    Client

    //Client
    
    #include <windows.h> //Required for socket init
    #include <iostream>
    using namespace std;
    
    //Client
    
    int main()
    
    {
    
    char buf2[256];
    
    string ip = "127.0.0.1";
    long rc;
    char buf[256];
    int nret;
    
    SOCKET kSock;
    
    WSAData wsdata;
    WORD wsver=MAKEWORD(2, 0);
    
    nret=WSAStartup(wsver, &wsdata);
    
    cout<<"Init success\n";
    
    	 kSock=socket(AF_INET, SOCK_STREAM, 0);
    
    cout<<"Socket initialized\n";
    
    sockaddr_in sin;
    sin.sin_port=htons(12345);
    sin.sin_addr.s_addr=inet_addr( ip.c_str() );
    sin.sin_family=AF_INET;
    
    	 rc = connect(kSock,(sockaddr*)&sin, sizeof(sin));
    
    	   if(rc==SOCKET_ERROR)
               {
                  cout<<"Connect failed, error: "<<WSAGetLastError();
                  WSACleanup();
                  return -1;
               }
    
    	else
    	{
    	cout<<"Connection successful!\n";
    	}
    
     while(rc!=SOCKET_ERROR)
      {
    
       cout<<"\nZeichenfolge eingeben [max 256]: ";
       cin>>buf;
    
       send(kSock,buf,0,0);
    
       recv(kSock, buf2, 256, 0);
    
       cout<<"Server Antwortet: "<<buf2;
    
       }
    
        if(rc==SOCKET_ERROR)
        {
    	  cout<<"Fehler: recv, fehler code: "<<WSAGetLastError();
    	 return 0;
    
    	}
    
    closesocket(kSock);
    return 0;
    }
    

    Server

    #include <windows.h> //Required for socket init
    #include <iostream>
    using namespace std;
    
    //server
    int main()
    {
    
    char buf2[]="test";
    long rc;
    SOCKET kSock;
    SOCKET client;
    int len;
    
    char buf[256];
    
    WSAData wsdata;
    WORD wsver=MAKEWORD(2, 0); //We want Winsock 2.0
    int nret=WSAStartup(wsver, &wsdata); //Pass version 2.0 and pointer to implement
    
    		if(nret != 0)
    		{
    		cout<<"Startup failed, error code: "<<WSAGetLastError();
    		WSACleanup();
    		return -1;
    		}
    
    cout<<"Init success\n";
    kSock=socket(AF_INET, SOCK_STREAM, 0);
    
    		if(kSock == INVALID_SOCKET)
    		{
    		cout<<"Socket init failed";
    		return -1;
    		}
    
    cout<<"Socket initialized\n";
    sockaddr_in sin;
    sin.sin_port=htons(12345);
    sin.sin_addr.s_addr=INADDR_ANY;
    sin.sin_family=AF_INET;
    
    		if(bind(kSock,(sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR)
    		{
    		cout<<"Failed to bind\n";
    		WSACleanup();
    		return -1;
    		}
    
    cout<<"Bind successful!\n";
    
      rc=listen(kSock,10);
    
      if(rc==SOCKET_ERROR)
      {
            cout<<"Error "<<GetLastError();
    	system("PAUSE");
    	return 0;
      }
    
      else
      {
        cout<<"acceptSocket ist im listen Modus....\n";
      }
    
    	// Verbindung annehmen
    	 client=accept(kSock,NULL,NULL);
    
    	if(client==INVALID_SOCKET)
            {
            cout<<"Fehler: accept, fehler code: <<"<<WSAGetLastError();
    	return 1;
    	}
    
    	 cout<<"Neue Verbindung wurde akzeptiert!\n";
    
       // Daten austauschen
      while(rc!=SOCKET_ERROR)
      {
    
                           send(client,buf2,strlen(buf2),0);
                           rc=recv(client,buf,256,0);
    
    				if(rc==0)
    				{
    					cout<<"Server hat die Verbindung getrennt..\n";
    					system("PAUSE");
    					return 0;
    				 }
    
    			if(rc==SOCKET_ERROR)
    		        {
    			  cout<<"Fehler: recv, fehler code: "<<WSAGetLastError();
    			  break;
    		       	}
    
    		cout<<"Client sendet: "<<system(buf);
                    cout<<"\n";
    
      }
    
    closesocket(client); //Close both socket handles
    closesocket(kSock);
    WSACleanup();
    return 0;
    }
    


  • Boah herzlichen Dank !!!

    ...werd mich jez durch den code arbeiten und verstehen 🙂


Anmelden zum Antworten