C# Problem z TCP NetworkStream

0

Witam, postanowiłem napisać aplikację z wykorzystaniem TCP. Problem napotkałem już na samym początku, mianowicie server wysyła do klienta tekst a ten ma go wypisać w konsoli, jednak klient dodaje puste linijki. Najłatwiej będzie mi to pokazać na przykładzie, przyjmujemy że server wysyła do klienta "Cześć", a klient ma za każdym razem wypisać to w konsoli.

Jak powinno być:
Cześć
Cześć
Cześć
itp

Jak jest(pustych linii jest dużo więcej):
Cześć

Cześć

Cześć
itp

Kod wrzucam na pastebin.
main - https://pastebin.com/NFdC0ZBc
server - https://pastebin.com/rfTRHCcs
klient - https://pastebin.com/bbPh55Uk

0

Wszystko działa ;) tylko wyświetlasz duży bufor.

Zmniejsz w kliencie na np 50 zamiast klient.ReceiveBufferSize.
Tylko nie wstawiaj 50 na chama tylko jakaś stałą sobie zrób ;)

Dzisiaj chyba i tak częściej się wysyła zserializowany obiekt ale zdarza się widok transferu "gołych danych".

Ustal wspólna wartość bufora dla serwera i klienta.
Jeżeli wiadomość jest za długa serwer jak dzieli a klient składa.
Często wprowadza się komendę wstępna mówiącą klientowi ile danych przyjdzie łącznie, albo na koniec komenda podsumowanie.
Tak aby mieć jakaś kontrole i by móc rozróżniać dane kolejnych paczek.

Ew jakiś ustalony nagłówek przed danymi, np numer kolejny paczki/numer części.
Klient może poprosić o ponowne wysłanie określonej paczki. Ale to już duża otoczka...
i potrzebując takich mechanizmów lepiej użyć np serwera ftp + dopisać klienta.

Aha, a wyświetlając możesz sobie trimować na końcu aby obciąć spacje :)

P

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