public void stratServer(String _ip, Int32 _port)
{
try
{
serverThread = new Thread(() =>
{
ipAddress = IPAddress.Parse(_ip);
tcpListener = new TcpListener(ipAddress, _port);
tcpListener.Start();
ServerInfoEventArgs args = new ServerInfoEventArgs();
args.consoleinfo = "The server is running at port " + _port + " ...\n";
OnNeedLog(args);
args.consoleinfo = "The local End point is: " + tcpListener.LocalEndpoint + "\n";
OnNeedLog(args);
args.consoleinfo = "Waiting for a connection.....\n";
OnNeedLog(args);
while (true)
{
if (tcpListener.Pending())
{
Console.WriteLine("Adding ID: " + Convert.ToString(idCounter));
Socket socket = tcpListener.AcceptSocket();
lobby.add(new ServerClient(
idCounter,
((IPEndPoint)socket.RemoteEndPoint).Port.ToString(),
((IPEndPoint)socket.RemoteEndPoint).Address.ToString(),
recieveData(socket, 100),
recieveData(socket, 100),
socket,
false
));
idCounter++;
string sendString = ((IPEndPoint)socket.RemoteEndPoint).Address.ToString();
sendString += ";" + ((IPEndPoint)socket.RemoteEndPoint).Port.ToString();
socket.Send(new ASCIIEncoding().GetBytes(sendString));
}
List<ServerClient>clList = lobby.getClientlist();
foreach (ServerClient client in clList)
{
if (!client.startedrecive)
{
client.startedrecive = true;
Thread recieve = new Thread(() =>
{
while (true)
{
recieveDone.Reset();
StateObject state = new StateObject();
state.workSocket = client.clientsocket;
client.clientsocket.BeginReceive(state.buffer, 0, StateObject.BufferSize,
0, new AsyncCallback(receiveCompleted), state);
recieveDone.WaitOne();
}
});
recieve.Start();
}
}
}
});
serverThread.Start();
}
catch (Exception e)
{
Console.WriteLine("Error..... " + e.Message);
}
}