TcpClient i Telnet

0

Witam, napisałem serwer socket w javie. Dowolnym klientem telnet lub klientem socket napisamym w javie loguję się z moim serwerkiem i jest wszytko OK.
Przyszło mi przejść na C# i pojawiły się problemy z pracą na socketach. Co się dzieje?
Nawiązuję połączenie z serwerem socketów na port 6666. Wysyłam coś na serwer ale serwer tego nie rozumie (przynajmniej tak mi się wydaje). Temat wydaje się banalny ale coś przeoczyłem.
Mój kod klienta:

        try
        {
        TcpClient client = new TcpClient();
        IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6666);
        //TcpClient client = new TcpClient("127.0.0.1", 6666);

        client.Connect(serverEndPoint);
        msg("Połączono.");
        NetworkStream clientStream = client.GetStream();

        ASCIIEncoding encoder = new ASCIIEncoding();
        byte[] buffer = encoder.GetBytes("hello");
        clientStream.Write(buffer, 0 , buffer.Length);
        msg("Wysłałem: hello");
        clientStream.Flush();
        clientStream.Close();
        client.Close();
        } catch {
            msg("Brak połączenia");
        } 

// koniec

Także po wysłaniu "hello" serwer powinien coś zrobić a nie reaguje. Przypomnę, że telnet windowsowy i wszystko inne podobne :) gada z serwerkiem bez problemów.

Bardzo proszę o pomoc. Pozdrawiam.
Wojtek

0

OK zrobiłem parę testów. Połączenie jest nawiązywane prawidłowo i "hello" jest wysyłane i odbierane przez serwer.
Problem jest w tym, że serwer odbiera dwie linie. Pierwszą z "hello" a drugą pustą.
Co za "śmieci" wysyłane są po hello ? jak się tego pozbyć po stronie klienta?

0

Twoj klient (prawie) na pewno wyslal dokladnie ciag znakow "hello" i nic poza tym.
To co obserwujesz, moze miec przyczyne w tym, ze po stronie serwera oczekujesz jakichs "linii" - a przeciez wysylasz żywcem znaki, bez zadnych terminatorow czy \n.
Sprawdz dokladnie co zawiera ta dodatkowa "pusta linia". Moze po stronie serwera uzywasz jakegos Read/Get/Line/String, a ono w momencie zerwania polaczenia zwraca pustystring/0lenghtarray/itp i wlasnie <-TO Ty pozniej wyswietlasz sobie sam poprzez jakies stdout/writeline jako "pusta linie", i to Cie w blad wprowadza?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0