Zdravím,
Vytvářím vícevláknový TCP Server. Bude se k němu hlásit více než jeden mobilní klient pomocí služby GPRS. Můj problém spočívá v tom, že nevím, jak přesně předat parametry třídy Server.cs do formuláře, tak abych mohl zobrazit přijatá data od jednotlivých
klientů. Díky za vaše rady a tipy.
Kód třídy Server.cs:
using System;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.Net;
namespace TCP_Monitor
{
class Server
{
private TcpListener tcpListener;
private Thread listenThread;
public string Rx_Data;
public event EventHandler Received;
public Server()
{
this.tcpListener = new TcpListener(IPAddress.Any, 2032);
this.listenThread = new Thread(new ThreadStart(ListenForClients));
this.listenThread.Start();
}
private void ListenForClients()
{
this.tcpListener.Start();
while (true)
{
TcpClient client = this.tcpListener.AcceptTcpClient();
Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));
clientThread.Start(client);
}
}
protected virtual void IsDataReceived(EventArgs e)
{
if (Received != null)
Received(this, e);
}
private void HandleClientComm(object client)
{
TcpClient tcpClient = (TcpClient)client;
NetworkStream clientStream = tcpClient.GetStream();
byte[] message = new byte[4096];
int bytesRead;
while (true)
{
bytesRead = 0;
try
{
bytesRead = clientStream.Read(message, 0, 4096);
}
catch
{
break;
}
if (bytesRead == 0)
{
break;
}
ASCIIEncoding encoder = new ASCIIEncoding();
Rx_Data = encoder.GetString(message, 0, bytesRead);
IsDataReceived(EventArgs.Empty);
}
}
}
}