muddesigner/MudEngine/Networking/Server.cs
u8sand_cp 15de95ba65 - Added Server class, basically finished.
- Server start method starts server's own thread
- Both tcp and udp support.
Needed:
- Connection to the MudEngine
- Finish coding serverThread
2010-07-19 15:35:05 -07:00

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;
}
}