Im Rahmen meiner FISI-Ausbildung schreibe ich ein Programm, welches Daten per TCP hin und her sendet. Ich habe einen Server, welcher die Daten bereitstellt, diese sind dort in Textboxen gespeichert. Vom Client sende ich nun eine Anfrage ("1" bis "19") von welcher Textbox ich die eventuell vorhandenen Daten haben möchte.
im client werte ich das ganze dann per switch-case aus und sende aus der jeweiligen Textbox entweder die daten oder eine Meldung dass keine Daten vorhanden sind.
Die Anfrage funktioniert, da ich mir dies per MessageBox ausgeben lasse, jedoch wird bei der Antwort (Daten bzw, Meldung) nur das erste Zeichen meines Strings angezeigt.
Hier einmal die entsprechenden Codezeilen:
Client
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| private void button1_Click(object sender, EventArgs e) { try { ba = asen.GetBytes("1"); stm.Write(ba, 0, ba.Length); bytesRead = stm.Read(ba, 0, ba.Length); MessageBox.Show(asen.GetString(ba, 0, bytesRead)); } catch(Exception ex) { MessageBox.Show(ex.Message + "\nEventuell Keine Verbindung vorhanden";); }
} |
server:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| toolStripStatusLabel1.Text = "Daten empfangen"; ASCIIEncoding encoder = new ASCIIEncoding();
switch (Convert.ToInt32(encoder.GetString(message, 0, bytesRead))) { case 1: MessageBox.Show("Anfrage an SÜ1"); if (tb1.Text.Equals("";)) { message = encoder.GetBytes("Kein Tag vorhanden"); } else { message = encoder.GetBytes(tb1.Text); } clientStream.Write(message, 0, message.Length); clientStream.Flush(); break; } |
Da ich Anfänger in C# bin und auch sonst noch nichts mit sockets gemacht haben würde ich mich über rasche Antwort freuen.
mfG Robert
Moderiert von Kha: Code- durch C#-Tags ersetzt