Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
C# spackt rum...
Der Doktor Offline
%0|%0

Beiträge: 7.827
Registriert seit: Dec 2008
Beitrag #1
C# spackt rum...
Nabend,
nachdem ich gestern endlich Windows 10 auf mein Toshiba ShitTab gekriegt habe, wollte ich jetzt mal den ganzen C# Kram aufsetzen.
Ich muss zugeben, dass es etwas her ist, seitdem ich TCP in C# benutzt habe oder überhaupt C#.
Naja jedenfalls funktioniert der ganze Client-Server Ablauf nicht so richtig.
Die Verbindung kann aufgebaut werden, und das Bild auf der Serverseite wird auch richtig eingelesen.
Beim Übertragen scheint jedoch ein Fehler zu passieren. Auf der Clientseite kommen nur 64 KB des 2.2 MB Bildes an und auf der Server Seite wird eine Exception ("Connection reset by peer").
Kennt da einer eine Abhilfe?

Server Seite (mit wundervoller Mono Formatierung):
http://pastebin.com/K4RwFEML

Client Seite:
http://pastebin.com/d61PLFDU

Ich vermute die Verbindung wird frühzeitig beendet oder die BufferSize ist zu klein.

Es ist besser nicht zu moderieren als falsch zu moderieren
(Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2015 18:25 von Der Doktor.)
29.08.2015 18:24
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
DosAmp Offline
andeq r0, r0, r0

Beiträge: 11.943
Registriert seit: Jul 2008
Beitrag #2
RE: C# spackt rum...
Vermutlich ist die Buffergröße im Client hart auf 64 KB limitiert. Allerdings ist das von dir implementierte Verfahren, eine Datei komplett einzulesen und mit einem einzigen Send-Befehl verschicken zu wollen, sehr unüblich. Meistens wählt man einen ausreichend großes Buffer-Array (typischerweise 4 oder 8 KB groß, in jedem Fall immer noch deutlich größer als ein einzelnes TCP-Segment) und liest bzw. schreibt in einer Schleife, bis der Quellstream am Ende ist (Read gibt 0 zurück).
Eine effizientere Lösung ist, einen FileStream und NetworkStream zu öffnen und die CopyTo-Methode der Stream-Klasse zu nutzen, um sämtliche vorhandenen Daten von einen in den anderen Stream zu kopieren.

Berühr die Kuh.
Mach es im Nu.

<~Vez> CloverOS would be perfect if you could change the wallpaper
(Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2015 18:50 von DosAmp.)
29.08.2015 18:49
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Der Doktor Offline
%0|%0

Beiträge: 7.827
Registriert seit: Dec 2008
Beitrag #3
RE: C# spackt rum...
(29.08.2015 18:49)DosAmp schrieb:  Vermutlich ist die Buffergröße im Client hart auf 64 KB limitiert. Allerdings ist das von dir implementierte Verfahren, eine Datei komplett einzulesen und mit einem einzigen Send-Befehl verschicken zu wollen, sehr unüblich. Meistens wählt man einen ausreichend großes Buffer-Array (typischerweise 4 oder 8 KB groß, in jedem Fall immer noch deutlich größer als ein einzelnes TCP-Segment) und liest bzw. schreibt in einer Schleife, bis der Quellstream am Ende ist (Read gibt 0 zurück).
Eine effizientere Lösung ist, einen FileStream und NetworkStream zu öffnen und die CopyTo-Methode der Stream-Klasse zu nutzen, um sämtliche vorhandenen Daten von einen in den anderen Stream zu kopieren.

Naja hab ja gesagt, dass es etwas her ist :fresse: Musste mich vorhin erstmal wieder einlesen.
Werd mal die CopyTo Methode ausprobieren.

Es ist besser nicht zu moderieren als falsch zu moderieren
29.08.2015 18:51
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #4
RE: C# spackt rum...
Kann man das nicht einfach mit nem Einzeiler in netcat machen?
29.08.2015 18:56
Diese Nachricht in einer Antwort zitieren
Der Doktor Offline
%0|%0

Beiträge: 7.827
Registriert seit: Dec 2008
Beitrag #5
RE: C# spackt rum...
CopyTo hat den Job gemacht. Auf die Methode hätte ich eigentlich selber drauf kommen können.... naja :D
Mal besser das C# Buch wieder rauskramen.

Es ist besser nicht zu moderieren als falsch zu moderieren
29.08.2015 19:06
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste