Ich arbeite an einem Windows-Dienst, der alle eingehenden TCP/IP-Streams mit dieser Klasse sammeln sollte. Es wird von den Diensten OnStart() void gestartet.C# TCP/IP funktioniert nicht richtig
Allerdings habe ich festgestellt, dass, wenn Nachrichten kommen von einem zweiten Absender, die gesamte Kommunikation funktioniert nicht mehr. Der Dienst reagiert dann nicht auf eine einzelne Verbindung, bis Sie ihn neu starten.
public class TCPIP
{
public static Receiver rc = new Receiver();
public class Receiver
{
public delegate void ReceivedEventHandler(string ReceivedText, string Sender);
public event ReceivedEventHandler Received;
public void Start()
{
System.Threading.Thread th = new System.Threading.Thread(internals);
th.Start();
}
private void internals()
{
TcpListener _listener = new TcpListener(1994);
_listener.Start();
while (true)
{
TcpClient rcclient = _listener.AcceptTcpClient();
StreamReader reader = new StreamReader(rcclient.GetStream());
string msg = "";
while (reader.Peek() > -1)
{
msg += Convert.ToChar(reader.Read()).ToString();
}
Received(msg, rcclient.Client.RemoteEndPoint.ToString().Split(Convert.ToChar(":"))[0]);
// Cleanup
rcclient.Close();
reader.Close();
}
}
Kann mir jemand helfen, diese Klasse zu verbessern aus Verbindungen von mehreren Endpunkten, zu beantworten und nicht nach einem besetzt werden?
Vielen Dank im Voraus.
Was passiert, wenn Sie es verfolgen – BugFinder
_ "alle eingehenden TCP/IP-Nachrichten" _ - TCP befasst sich in Streams, nicht Nachrichten. Wenn Sie alle Pakete erfassen möchten, möchten Sie einen Netzwerkfiltertreiber, den Sie in C# nicht ausführen können. – CodeCaster
Danke, und ich spreche nur einen Port, aber für mehrere Endpunkte. – Fabi