Client-Server-Verbindung Probleme im WAN



  • Hallo,

    Ich versuche mich an einem Chat, um ein wenig in Sachen
    Multithreading und Sockets zu lernen.
    Nun habe ich einen Client und einen Server.
    Wenn ich die Client-Server Verbindung auf meinem
    lokalen PC teste funktioniert alles einwandfrei.
    Wenn der Client allerdings versucht sich über
    das Internet von einem entfernten Rechner mit
    meinen Chat Server zu verbinden, klappt dies nicht.
    Mein Router ist so eingestellt, das er
    Verbindungsanforderungen vom Client an dem richtigen
    Port an meine LAN-Adresse 192.168.1.10 wo der Server liegt
    weiterleitet.

    Hat vieleicht jemand eine Idee, wo das Problem ist ?

    Client: ´

    ......	
    
            private void button2_Click(object sender, EventArgs e)
            {
                port = Int32.Parse(textBox3.Text);
                ipaddress = textBox2.Text;
                nick = textBox4.Text;
                try
                {
                    server = new TcpClient(ipaddress, port);
                    ns = server.GetStream();
                    StateObject state = new StateObject();
                    state.workSocket = server.Client;
                    server.Client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                            new AsyncCallback(OnReceive), state);
                    label3.Text = "Verbunden";                      
                }
                catch (SocketException)
                {
                    MessageBox.Show("Unable to connect to server");
                }
            }
    
    	........
    

    Server:

    .....
    
           public void StartListen() {
    
                IPAddress localAddr = IPAddress.Parse("127.0.0.1");
    
                tcpServer = new TcpListener(localAddr, Int32.Parse(tbPortNumber.Text));
                tcpServer.Start();
    
                 while (true)
                {
                    Thread t = new Thread(new ParameterizedThreadStart(NewClient));
                    tcpClient = tcpServer.AcceptTcpClient();
                    t.Start(tcpClient); 
                }
    
            }
    
    	...........
    

    Bin für jeden Denkanstoss dankbar

    Pedro



  • Hallo

    IPAddress localAddr = IPAddress.Parse("127.0.0.1");

    tcpServer = new TcpListener(localAddr, Int32.Parse(tbPortNumber.Text));
    tcpServer.Start();

    Gibt bei localAddr die IP Adresse des Interfaces an, über welches Du kommunizieren möchtest. (So wie es jetzt ist, kannst Du nur Verbindungen via Loopback Interface annehmen). Es muss dieselbe IP Adresse sein, auf welche Du das Port Forwarding machst.

    Gruss Simon



  • Hallo Simon,

    vielen Dank. Jetzt klappt es. 🙂

    Bis dann ...

    Pedro


Anmelden zum Antworten