- Server start method starts server's own thread - Both tcp and udp support. Needed: - Connection to the MudEngine - Finish coding serverThread
90 lines
2.5 KiB
C#
90 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Net;
|
|
using System.Net.Sockets;
|
|
using System.Threading;
|
|
|
|
/* Usage:
|
|
* Server MUDServer = new Server();
|
|
* MUDServer.InitializeUDP(666); or MUDServer.InitializeTCP(666);
|
|
* MUDServer.Start();
|
|
*/
|
|
|
|
namespace MudEngine.Networking
|
|
{
|
|
class Server
|
|
{
|
|
public Server()
|
|
{
|
|
stage = 0;
|
|
}
|
|
~Server()
|
|
{
|
|
stage = 0;
|
|
if (server.type == ProtocolType.Tcp)
|
|
{
|
|
for (int i = 0; i < numberOfClients; i++)
|
|
clients[i].CleanUp();
|
|
numberOfClients = 0;
|
|
}
|
|
server.CleanUp();
|
|
}
|
|
public bool InitializeTCP(int port, int max_cons)
|
|
{
|
|
if (stage != 0)
|
|
return false;
|
|
if (server.Initialize(port, ProtocolType.Tcp) < 0)
|
|
return false;
|
|
numberOfClients = max_cons;
|
|
clients = new ClientSocket[max_cons];
|
|
stage++;
|
|
return true;
|
|
}
|
|
public bool InitializeUDP(int port)
|
|
{
|
|
if (stage != 0)
|
|
return false;
|
|
if (server.Initialize(port, ProtocolType.Udp) < 0)
|
|
return false;
|
|
stage++;
|
|
return true;
|
|
}
|
|
public bool Start()
|
|
{
|
|
if (stage != 1)
|
|
return false;
|
|
if (server.Start() < 0)
|
|
return false;
|
|
if (server.Bind() < 0)
|
|
return false;
|
|
if (server.type == ProtocolType.Tcp)
|
|
if (server.Listen() < 0)
|
|
return false;
|
|
stage++;
|
|
serverThread = new Thread(ServerThread);
|
|
serverThread.Start();
|
|
return true;
|
|
}
|
|
/*
|
|
* ServerThread, if UDP: Accepts messages(ReceiveFrom) and sends in correspondence to the correct player
|
|
* if TCP: Accepts connection and opens a separate thread to receive a data stream between the clien
|
|
*/
|
|
private void ServerThread()
|
|
{
|
|
if (server.type == ProtocolType.Udp)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
}
|
|
}
|
|
private Thread serverThread;
|
|
private ServerSocket server;
|
|
private int stage;
|
|
// TCP Stuff:
|
|
private ClientSocket[] clients;
|
|
private int numberOfClients;
|
|
}
|
|
}
|