Laden...

Wo finde ich ein Beispiel eines TCP Listeners im WPF?

Erstellt von ado683 vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.416 Views
A
ado683 Themenstarter:in
27 Beiträge seit 2019
vor 5 Jahren
Wo finde ich ein Beispiel eines TCP Listeners im WPF?

Hallo hat irgendjemand mal ein Beispiel von einem TCP Listener in der WPF vorhanden?

Auf youtube etc. gehen die meisten nur darauf ein wenn man windows forms benutzt und da händeln das die leute mit dem invokerequired, Wpf bietet das halt nicht an. Ich habe eigentlich auch schon eine Lösung meine Frage ist jetzt nur wie kann ich daten empfangen?

Also mein Server startet und verbindet sich aber dann passiert nicht viel. Weiß nicht wie ich weiter vorgehen muss.


using System.Windows;
using System;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.Net;


namespace TCP_Listener
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        private int port;
        private bool loop = true;
        private TcpListener serverListener;
        private Socket serverAcceptSocket;


        public MainWindow()
        {
            InitializeComponent();
        }

        public void TcpServer()
        {
            try
            {
                IPAddress ipadd = IPAddress.Parse("127.0.0.1");
                port = Int32.Parse(tBox_Port.Text);

                serverListener = new TcpListener(ipadd, 45455);
                serverListener.Start();
                textBoxVerbunden.Text = "TCP Server Start";
                Thread serverThread = new Thread(new ThreadStart(Receive_From_Client));

            }
            catch
            {
                
            }
        }

        

        public void Receive_From_Client()
        {
            loop = true;
            try
            {
                serverAcceptSocket = serverListener.AcceptSocket();

                while (loop)
                {
                    if (serverAcceptSocket.Connected)
                    {
                        try
                        {

                            byte[] receiveByte = new byte[1024];
                            int nValue = serverAcceptSocket.Receive(receiveByte, receiveByte.Length, 0);

                            if (nValue > 0)
                            {
                                string data = null;
                                data = Encoding.Unicode.GetString(receiveByte);

                                tBox_Outcoming.Text = data;
                            }

                        }
                        catch
                        {

                        }
                    }
                    else
                    {
                        TCP_Close();
                    }
                }
            }
            catch
            {

            }
        }

        public void TCP_Close()
        {
            if (loop == true) loop = false;

            if(serverAcceptSocket != null)
            {
                serverAcceptSocket.Close();
            }

            if(serverListener != null)
            {
                serverListener.Stop();
            }

        }

        private void btn_Send_Click(object sender, RoutedEventArgs e)
        {
            string data = string.Format("{0}", tBox_Outcoming.Text);

            //string data = "<cmdMessage cmdID=\"123ABC\"><![CDATA[<font size=\"+2\" color=\"#ffffff\">Hello World!</font>]]></cmdMessage>";
            byte[] buffer = Encoding.Unicode.GetBytes(data);
            serverAcceptSocket.Send(buffer, 0, buffer.Length, 0);
        }


        private void btnServerStart_Click(object sender, RoutedEventArgs e)
        {
            TcpServer();
        }

        
    }  

}

danke

78 Beiträge seit 2016
vor 5 Jahren

WPF und TCP haben erstmal wenig mit einander zu tun.

Was du sucht ist ein Dispatcher:

https://docs.microsoft.com/de-de/dotnet/api/system.windows.threading.dispatcher?view=netframework-4.7.2

http://dotnet-paderborn.azurewebsites.net/

A
ado683 Themenstarter:in
27 Beiträge seit 2019
vor 5 Jahren

dankeschön habe das aber jetzt alles anders gelöst. mit dem backgroundworker

463 Beiträge seit 2009
vor 5 Jahren

Und wie dir schon mehrfach gesagt wurde: [Tipp] Anfängerhinweis == true / == false