Frage zu Winsock Server



  • Hallo ich habe diesen WinSock Server geschrieben:

    #include <windows.h>
    #include <conio>
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main()
    {
    
    char buf[256] ;
    
    long rc;
    
    SOCKET kSock;
    SOCKET client;
    
    int len;
    
    WSAData wsdata;
    WORD wsver=MAKEWORD(2, 0);
    int nret=WSAStartup(wsver, &wsdata);
    
    kSock=socket(AF_INET, SOCK_STREAM, 0);
    
    cout<<"Server"<<endl;
    
    sockaddr_in sin;
    sin.sin_port=htons(12345);
    sin.sin_addr.s_addr=INADDR_ANY;
    sin.sin_family=AF_INET;
    
    bind(kSock,(sockaddr*)&sin, sizeof(sin));
    
    rc = listen(kSock,10);
    
    client = accept(kSock,NULL,NULL);
    
            if (client != SOCKET_ERROR)
            {
               cout<<"Client verbunden"<<endl;
            }
    
      while(rc!=SOCKET_ERROR)
      {
      rc=recv(client,buf,256,0);
    
            cout<<"Client sendet: " << buf <<endl;
            buf[rc] = '\0';
    
      }
    
    system("PAUSE");
    
    closesocket(client);
    closesocket(kSock);
    WSACleanup();
    
    return 0;
    }
    

    Nun zu meiner Frage wie kann ich darauf connecten ohne erst den Port 12345 im Router freizugeben.

    So wie z.b. bei ICQ da musste ich auch keine Ports im Router freigeben.

    Hat wer eine Ahnung wie man das lösen kann?



  • Gar nicht. Und ICQ verbindet ja auch zum Server und nicht umgekehrt.



  • UPnP



  • Wie funktioniert das denn mit UPNP dann muss ich doch den kompletten Server auf das UPNP Protokoll umschreiben oder?

    Kennt wer ein Tutorial oder so wo so etwas durchgenommen wird?

    Bei Google konnte ich dazu leider nichts finden.



  • Vom Prinzip her mußt du ein Paket zu der IP Adresse des Computers der sich verbinden will raussenden.
    Dann sieht der Router dies als Verbindung an und von außen ist eine Verbindung möglich.

    Das Problem hierbei ist zuerst zu erfahren wie die IP Adresse des Computers lautet die sich von außen verbinden will. Dazu braucht man einen Server mit fester IP Adresse an denen beide beteiligten Computer sich anmelden und so erstmal die Absicht sich verbinden zu wollen als Nachricht (mit ihren IP Adressen) austauschen.



  • UPnP ist doch was anderes, das ist doch dass sich der Router automatisch konfiguriert, wenn ein Port gebunden wird.
    kA ob man das manuell machen muss oder ob Router mit ausreichend Unterstützung das automatisch machen.


Anmelden zum Antworten