Laden...

Socket empfängt unregelmäßig Daten

Erstellt von MarC611 vor 11 Jahren Letzter Beitrag vor 11 Jahren 738 Views
M
MarC611 Themenstarter:in
81 Beiträge seit 2009
vor 11 Jahren
Socket empfängt unregelmäßig Daten

Hallo,

ich habe ein Problem beim Empfangen von Daten über eine Socketschnittstelle.
Sende ich Daten empfange ich mal etwas, also ich seh den Text dann in meiner MessageBox und ein anderes mal nicht (leere MessageBox).
So kann es vorkommen dass ich 4 mal nichts bekomme, dann wieder etwas und dann 3 mal wieder nichts.

Hate jemand von euch vielleicht eine Ahnung woran dass liegen könnte.
Oder weiß jemand was ich vielleicht testen könnte.


        public void Server()
        {
            try
            {
                myListener = new TcpListener(localAddr, port);
                myListener.Start();
                Thread myThread = new Thread(new ThreadStart(StartListen));
                myThread.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show("An Exception Occurred while Listening : " + ex.Message);
            }
        }

        public void StartListen()
        {
            while (true)
            {
                Socket mySocket = myListener.AcceptSocket();

                if (mySocket.Connected)
                {
                    //MessageBox.Show(System.Convert.ToString(mySocket.RemoteEndPoint));
                    Byte[] bReceive = new Byte[mySocket.Available];
                    mySocket.Receive(bReceive, 0, mySocket.Available, SocketFlags.None);
                    string sBuffer = Encoding.ASCII.GetString(bReceive);
                    MessageBox.Show(sBuffer);
                }
         

W
872 Beiträge seit 2005
vor 11 Jahren

Pruef mal bei Sender, ob Du auch Flush aufrufst oder AutoFlush gesetzt hast.

U
1.688 Beiträge seit 2007
vor 11 Jahren

Hallo,

es ist wohl eher seltsam, dass Du überhaupt etwas empfängst.

Lass Dir mal "mySocket.Available" ausgeben. Das wird in den meisten Fällen 0 sein. Das liegt einerseits daran, dass Du den Wert direkt nach dem Verbinden prüfst und daran, dass Du andererseits nach jedem Lesen den aktuellen Socket verwirfst (damit auch dessen Daten) und auf eine neue Verbindung wartest.

Es gibt hier im Forum genügend Tutorials für TCP-Verbindungen - such einfach mal danach.

M
MarC611 Themenstarter:in
81 Beiträge seit 2009
vor 11 Jahren

Danke für eure schnellen Antworten.
Ich habe es jetzt wie folgt verändert.

Jetzt ist es so dass der erste Werte den ich nach dem Connect sende nicht angezeigt wird. Alle weiteren bekomme ich jetzt aber in meiner MessageBox.
Woran könnte dass noch liegen?


        public void StartListen()
        {
            int bytes = 0;

            while (true)
            {
                Socket mySocket = myListener.AcceptSocket();

                if (mySocket.Connected)
                {                   
                    Byte[] bReceive = new Byte[256];
                    bytes = mySocket.Receive(bReceive, bReceive.Length, 0);
                    string sBuffer = Encoding.ASCII.GetString(bReceive, 0, bytes);

                    MessageBox.Show(sBuffer);
                }
            }
        }

156 Beiträge seit 2010
vor 11 Jahren

Moin,

2 Beiträge vorher -> Telnet: Datenpaket unvollständig?

hand, mogel