Problem z czytaniem StreamReader

Problem z czytaniem StreamReader
xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

Witam! Przepisując 4. raz mój prosty komunikator, natknąłem się na taką rzecz przy testowaniu. Metoda Receive klasy Client nie zwraca jakby nic bo ani if ani else się nie spełnia. Wcześniej robiłem podobne jak nie identyczne rozwiązanie i działało. Moglibyście przeanalizować kod i powiedzieć co jest do cholery nie tak??

Kopiuj
                // to tutaj mam w wątku (pętlę i takie tam):
                Client client = new Client(listener.AcceptTcpClient());
                Log("New pending connection from: " + client.Address); // tu ok, wyświetla się o połączeniu
                if (client.Receive() == Client.LoginRequest) // o tu..
                {
                    clients.Add(client);
                    Log("Client login succeed");
                }
                else
                {
                    client.Close();
                    Log("Client rejected");
                }


                // to sobie robię na od razu serwerze, bo nie zdążyłem zaimplementować tego w kliencie:
                System.Net.Sockets.TcpClient c = new System.Net.Sockets.TcpClient("127.0.0.1", 1024);
                System.IO.StreamWriter w = new System.IO.StreamWriter(c.GetStream());
                w.WriteLine(Client.LoginRequest); // tu wysyłam prośbę i ch** ;/


                // metoda Receive klasy Client:
                public string Receive()
                {
                    return reader.ReadLine();
                }

Pomożetie?


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
edytowany 1x, ostatnio: xeo545x39
xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

I macie jakieś pomysły? Już się męczę z tym huk wie ile.. Pewnie albo jakiś głupi błąd, którego nie widzę (!) albo StreamWriter lub Reader się popsuł :D

Z breakpointa wynika, że program się stopuje na if'ie. Są jakieś inne pomysły co ten program odpier*** w tym czasie?

Jeszcze mam jedną rzecz. Spróbowałem wysyłać request'a w pętli i pomogło, jeżeli wykonają się 51 razy w.WriteLine(...) to wtedy serwer odbiera wiadomość ale też te 50 następnych.. no kurde wtf?


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
edytowany 3x, ostatnio: xeo545x39
xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

Pomóóóż ktoś!! :) Ja nie mogę nic wymyśleć...
Kurde jak dam Binary a nie Stream Reader to działa elegancko. yhh, tylko, że jak pamiętam Binary Reader dodaje jakieś krzaczki... Jak zrobić to ze Stream a nie Binary??


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
edytowany 1x, ostatnio: xeo545x39
RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
0

Z debuggera korzystać potrafisz? Program nie zatrzymuje się na if, bo to nie jest instrukcja blokująca. Prawdopodobnie na ReadLine - ale sprawdź. Zamień ją na zwykłe Read, być może w buforze znajduje się coś niezakończone znakiem nowej linii. Read/WriteString w BinaryReader/Writer tym się różni od TextReader/Writer, że napis przesyła wysyłając najpierw jego długość, a ten drugi szukając znaku nowej linii.

xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

Ok, dzięki za wyjaśnienie, spróbuję z samym Readem - jeszcze tak nie próbowałem. Tak w sumie to zatrzymuje się na if bo to co w warunku należy do if'a :P Ale wiadomo o co chodzi ;)


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
1

step in w debuggerze nadal działa, prawda?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.