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
WPF und TCP haben erstmal wenig mit einander zu tun.
Was du sucht ist ein Dispatcher:
http://dotnet-paderborn.azurewebsites.net/
dankeschön habe das aber jetzt alles anders gelöst. mit dem backgroundworker