Hallo,
Ik ben bezig met een applicatie waar ik een TCP server in wil gebruiken.
Ik heb de code van een console applicatie omgezet naar een form applicatie.
De applicatie lijkt te werken (dit zie ik aan de trace) maar mijn form reageert niet meer.
Ik denk dat dit mogelijk kan komen omdat de server een endless while loop begint dat mogelijk op het main thread wordt uitgevoerd.
Server code:
In mijn form maar ik een server aan:
Ik kan aan de tracemeldingen zien dat de server clients accepteerd (2 in totaal) maar het form zelf reageert niet meer...
Is er een mogelijkheid dat ik de server op een eigen thread laat starten?
Graag jullie suggesties
Alvast bedankt.
Ik ben bezig met een applicatie waar ik een TCP server in wil gebruiken.
Ik heb de code van een console applicatie omgezet naar een form applicatie.
De applicatie lijkt te werken (dit zie ik aan de trace) maar mijn form reageert niet meer.
Ik denk dat dit mogelijk kan komen omdat de server een endless while loop begint dat mogelijk op het main thread wordt uitgevoerd.
Server code:
Code:
class ServerThreadPool
{
//Declaration of the TcpListener
private TcpListener client;
//Constructor
public ServerThreadPool()
{
IPEndPoint IpAdress = new IPEndPoint(IPAddress.Any, 8000);
client = new TcpListener(IpAdress);
client.Start();
Trace.WriteLine("Waiting for clients...");
while (true)
{
while (!client.Pending())
{
Thread.Sleep(1000);
}
ConnectionThread newconnection = new ConnectionThread();
newconnection.threadListener = this.client;
ThreadPool.QueueUserWorkItem(new WaitCallback(newconnection.HandleConnection));
}
}
}
class ConnectionThread
{
public TcpListener threadListener;
private static int connections = 0;
public void HandleConnection(object state)
{
int recv;
byte[] data = new byte[1024];
TcpClient client = threadListener.AcceptTcpClient();
NetworkStream ns = client.GetStream();
connections++;
Trace.WriteLine(connections, "New client accepted: active connections");
string welcome = "Lets get rocking :) ";
data = Encoding.ASCII.GetBytes(welcome);
ns.Write(data, 0, data.Length);
while (true)
{
data = new byte[1024];
recv = ns.Read(data, 0, data.Length);
if (recv == 0)
break;
ns.Write(data, 0, recv);
}
ns.Close();
client.Close();
connections = connections - 1;
Trace.WriteLine(connections, "Client disconnected: active connections");
}
}
In mijn form maar ik een server aan:
Code:
public partial class serverUI : Form
{
public serverUI()
{
InitializeComponent();
}
private void serverUI_Load(object sender, EventArgs e)
{
ServerThreadPool STP = new ServerThreadPool();
}
}
Ik kan aan de tracemeldingen zien dat de server clients accepteerd (2 in totaal) maar het form zelf reageert niet meer...
Is er een mogelijkheid dat ik de server op een eigen thread laat starten?
Graag jullie suggesties

Alvast bedankt.