Forum: PC-Programmierung C# TcpClient


von Sharper (Gast)


Lesenswert?

Hallo,
hab mir aus der MSDN folgenden Code abgekupfert:
1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Text;
7
using System.Windows.Forms;
8
using System.IO;
9
using System.IO.Pipes;
10
using Microsoft.Win32.SafeHandles;
11
using System.Net.Sockets;
12
using System.Net;
13
using System.Threading;
14
using System.Timers;
15
16
namespace TCP_test
17
{
18
    public partial class Form1 : Form
19
    {
20
        public Form1()
21
        {
22
            InitializeComponent();
23
        }
24
25
        private void Form1_Load(object sender, EventArgs e)
26
        {
27
      
28
  
29
    Int32 port = 3007;
30
    TcpClient client = new TcpClient("192.168.1.1", port);
31
    Byte[] data = System.Text.Encoding.ASCII.GetBytes("hallo");         
32
    NetworkStream stream = client.GetStream();
33
    Console.WriteLine("Sent: {0}", "hallo");
34
    while (client.Connected == true)
35
    {
36
        data = new Byte[256];
37
        String responseData = String.Empty;
38
        Int32 bytes = stream.Read(data, 0, data.Length);
39
        responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
40
        Console.WriteLine("Received: {0}", responseData);
41
    }
42
    stream.Close();         
43
    client.Close();         
44
        }
45
    }
46
}
Jetzt habe ich das Problem, dass beim Server zwar das "Hallo" ankommt, 
wenn der Server dann was zurückschickt kommt das allerdings nicht an.
Kennt sich da jemand mit aus?
Grüße
Martin

von Peter II (Gast)


Lesenswert?

geht es noch etas genauer? hängt er in den Read fest oder kommt nur dein 
erwarter String nicht an?

von JojoS (Gast)


Lesenswert?

Int32 bytes = stream.Read(data, 0, data.Length);

hier wird auf 256 Zeichen gewartet weil data.Length so lang ist, trag 
mal 1 für data.Length ein, dann sollte Zeichen einzeln eintrudeln.

von Sharper (Gast)


Lesenswert?

Hallo Peter,
ich muss mich entschuldigen, ich hatte eine Zeile vergessen, in der ich 
das Hallo an den Server schicke, dann geht es nämlich.
Danke & Gruß

von mar IO (Gast)


Lesenswert?

JojoS schrieb:
> Int32 bytes = stream.Read(data, 0, data.Length);
>
> hier wird auf 256 Zeichen gewartet weil data.Length so lang ist, trag
> mal 1 für data.Length ein, dann sollte Zeichen einzeln eintrudeln.

Das ist teilweise falsch!

"Diese Methode liest Daten in den buffer-Parameter und gibt die Anzahl 
der erfolgreich gelesenen Bytes zurück. Wenn keine Daten zum Lesen zur 
Verfügung stehen, gibt die Read-Methode 0 (null) zurück. Die 
Read-Operation liest alle verfügbaren Daten bis zu der im size-Parameter 
angegebenen Anzahl von Bytes. Wenn der Remotehost die Verbindung 
schließt und alle verfügbaren Daten empfangen wurden, wird die 
Read-Methode sofort abgeschlossen, und diese gibt 0 (null) Bytes 
zurück."

Quelle: Hinweis aus der Doku - 
http://msdn.microsoft.com/de-de/library/system.net.sockets.networkstream.read(v=VS.100).aspx

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.