Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using ConsoleApplication1;
- using Lidgren.Network;
- using System.Net;
- using System.Threading;
- using N = System.Net;
- using System.Collections;
- using System.Net.Sockets;
- using System.Data;
- using MySql.Data.MySqlClient;
- namespace GameServer
- {
- class Server
- {
- public TcpListener m_Socket;
- public int count = 0;
- static int objectsToCreate = 1000;
- Lobby[] lobbies = new Lobby[objectsToCreate];
- public Player current_player = new Player();
- public MySqlConnection database()
- {
- String connString = "Server=127.0.0.1;Port=3306;Database=rpc;Uid=server;password=Derp123;";
- MySqlConnection conn = new MySqlConnection(connString);
- //MySqlCommand command = conn.CreateCommand();
- /*
- command.CommandText = "Select * from user";
- try
- {
- conn.Open();
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex);
- }
- MySqlDataReader reader = command.ExecuteReader();
- while (reader.Read())
- {
- Console.WriteLine(reader["username"].ToString() + " " + reader["Password"].ToString());
- }
- //Console.ReadLine();
- */
- return conn;
- }
- private void Server_start()
- {
- Thread acceptClients = new Thread(new ThreadStart(acceptConnections));
- acceptClients.Start();
- }
- private void acceptConnections()
- {
- try
- {
- IPAddress ipConfig = IPAddress.Parse("192.168.1.124");
- m_Socket = new TcpListener(ipConfig, 6969);
- m_Socket.Start();
- Console.WriteLine("listening");
- while (true)
- {
- TcpClient m_Client = m_Socket.AcceptTcpClient();
- //sendData(m_Client[count], "connected");
- Console.WriteLine("new client");
- Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));
- clientThread.Start(m_Client);
- }
- }
- catch (Exception error)
- {
- Console.WriteLine(error.Message);
- }
- }
- private void HandleClientComm(object client)
- {
- TcpClient tcpClient = (TcpClient)client;
- NetworkStream clientStream = tcpClient.GetStream();
- byte[] message = new byte[4096];
- int bytesRead;
- String client_msg;
- String username = null;
- while (true)
- {
- bytesRead = 0;
- #region read_msg
- try
- {
- //blocks until a client sends a message
- bytesRead = clientStream.Read(message, 0, 4096);
- Console.WriteLine(bytesRead);
- }
- catch
- {
- //a socket error has occured
- break;
- }
- if (bytesRead == 0)
- {
- //the client has disconnected from the server
- Console.WriteLine("errorr1!!!!");
- break;
- }
- if (bytesRead > 0)
- {
- ASCIIEncoding encoder = new ASCIIEncoding();
- client_msg = encoder.GetString(message, 0, bytesRead);
- //Console.WriteLine(client_msg);
- byte[] buffer;
- #region client_msg switch
- switch (client_msg)
- {
- case "Login":
- if (username == null)
- {
- Console.WriteLine("Login\n");
- username = Login(clientStream);
- }
- else
- {
- Console.WriteLine("already logged in!\n");
- buffer = encoder.GetBytes("alrdy_log");
- clientStream.Write(buffer, 0, buffer.Length);
- }
- continue;
- case "UpdateProfile":
- Console.WriteLine("UpdateProfile\n");
- UpdateProfile(clientStream, username);
- continue;
- case "GetProfile":
- if (username != null)
- {
- Console.WriteLine("GetProfile\n");
- GetProfile(clientStream, username);
- continue;
- }
- else
- {
- Console.WriteLine("Not Logged in get profile area!\n");
- buffer = encoder.GetBytes("no_login");
- clientStream.Write(buffer, 0, buffer.Length);
- }
- continue;
- case "HostLobby":
- if (username != null)
- {
- Console.WriteLine("HostLobby\n");
- HostLobby(clientStream, username);
- continue;
- }
- else
- {
- Console.WriteLine("Not Logged in Hostlobby area!\n");
- buffer = encoder.GetBytes("no_login");
- clientStream.Write(buffer, 0, buffer.Length);
- }
- continue;
- case "GetLobbies":
- Console.WriteLine("GetLobbies\n");
- GetLobbies(clientStream, username);
- continue;
- default:
- Console.WriteLine("invalid! " + client_msg + "\n");
- buffer = encoder.GetBytes("invalid");
- clientStream.Write(buffer, 0, buffer.Length);
- continue;
- }
- #endregion
- #endregion
- }
- //message has successfully been received
- //ASCIIEncoding encoder = new ASCIIEncoding();
- //Console.WriteLine(encoder.GetString(message, 0, bytesRead));
- }
- tcpClient.Close();
- }
- private void sendData(TcpClient soc, String strData)
- {
- try
- {
- if (soc.Connected && soc.Client.Poll(3000, SelectMode.SelectWrite))
- {
- {
- char c = (char)0;
- byte[] msg = System.Text.Encoding.ASCII.GetBytes(strData + c);
- int i = soc.Client.Send(msg, 0, msg.Length, SocketFlags.None);
- }
- }
- else
- {
- }
- }
- catch (Exception ex)
- {
- }
- }
- private void startGame(NetworkStream clientStream, int current_lobby)
- {
- Console.WriteLine("startGame area");
- byte[] buffer;
- ASCIIEncoding encoder = new ASCIIEncoding();
- buffer = encoder.GetBytes("gamestart");
- Console.WriteLine("gamestart");
- clientStream.Write(buffer, 0, buffer.Length);
- bool gotProfile = false;
- List<String> player1 = new List<String>();
- byte[] message = new byte[4096];
- int bytesRead;
- String client_msg = null;
- bool rdy = false;
- #region Clients read
- while (true)
- {
- bytesRead = 0;
- try
- {
- //blocks until a client sends a message
- bytesRead = clientStream.Read(message, 0, 4096);
- Console.WriteLine(bytesRead);
- }
- catch
- {
- //a socket error has occured
- break;
- }
- if (bytesRead == 0)
- {
- //the client has disconnected from the server
- Console.WriteLine("errorr1!!!!");
- break;
- }
- if (bytesRead > 0)
- {
- client_msg = encoder.GetString(message, 0, bytesRead);
- Console.WriteLine("rdy area");
- Console.WriteLine("client msg1 " + client_msg);
- #region client 1 rdy
- if (client_msg.ToLower().Equals("rdy"))
- {
- rdy = true;
- String command = "profile";
- int count = 0;
- buffer = encoder.GetBytes(command);
- clientStream.Write(buffer, 0, buffer.Length);
- while (true)
- {
- try
- {
- //blocks until a client sends a message
- bytesRead = clientStream.Read(message, 0, 4096);
- Console.WriteLine(bytesRead);
- }
- catch
- {
- //a socket error has occured
- break;
- }
- if (bytesRead == 0)
- {
- //the client has disconnected from the server
- Console.WriteLine("errorr1!!!!");
- break;
- }
- if (bytesRead > 0)
- {
- //bytesRead = clientStream.Read(message, 0, 4096);
- }
- }
- gotProfile = true;
- }
- #endregion
- }
- #endregion
- }
- }
- private void HostLobby(NetworkStream clientStream, String username)
- {
- Console.WriteLine("hostlobby area");
- byte[] buffer;
- ASCIIEncoding encoder = new ASCIIEncoding();
- buffer = encoder.GetBytes("LobbyName");
- clientStream.Write(buffer, 0, buffer.Length);
- byte[] message = new byte[4096];
- int bytesRead;
- String client_msg = null;
- #region Client read
- while (true)
- {
- bytesRead = 0;
- try
- {
- //blocks until a client sends a message
- bytesRead = clientStream.Read(message, 0, 4096);
- Console.WriteLine(bytesRead);
- }
- catch
- {
- //a socket error has occured
- break;
- }
- if (bytesRead == 0)
- {
- //the client has disconnected from the server
- Console.WriteLine("errorr1!!!!");
- break;
- }
- if (bytesRead > 0)
- {
- client_msg = encoder.GetString(message, 0, bytesRead);
- Console.WriteLine("hi");
- break;
- }
- }
- #endregion
- if (client_msg.Length > 0)
- {
- Console.WriteLine("hi1");
- //buffer = encoder.GetBytes("Next Command!");
- lobbies[count] = new Lobby()
- {
- objectNumber = count,
- players = 1,
- tcpPlayer1 = clientStream,
- lobby_name = client_msg
- };
- lobbies[count].tcpPlayer1 = clientStream;
- int current_lobby = count;
- count++;
- #region waiting for game start alive statements
- while (true)
- {
- buffer = encoder.GetBytes("alive");
- try
- {
- lobbies[current_lobby].tcpPlayer1.Write(buffer, 0, buffer.Length);
- #region Clientread
- while (true)
- {
- bytesRead = 0;
- try
- {
- //blocks until a client sends a message
- bytesRead = clientStream.Read(message, 0, 4096);
- Console.WriteLine(bytesRead);
- }
- catch
- {
- //a socket error has occured
- break;
- }
- if (bytesRead == 0)
- {
- //the client has disconnected from the server
- Console.WriteLine("errorr1!!!!");
- break;
- }
- if (bytesRead > 0)
- {
- client_msg = encoder.GetString(message, 0, bytesRead);
- if ((client_msg == "alive") && (lobbies[current_lobby].ready))
- {
- //game start stuff?
- startGame(lobbies[current_lobby].tcpPlayer1, i);
- }
- else
- {
- buffer = encoder.GetBytes("alive");
- lobbies[current_lobby].tcpPlayer1.Write(buffer, 0, buffer.Length);
- Console.WriteLine("alive recieved");
- }
- }
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex);
- break;
- }
- #endregion
- }
- #endregion
- }
- }
- private void GetLobbies(NetworkStream clientStream, String username)
- {
- Console.WriteLine("GetLobbies area");
- byte[] buffer;
- byte[] buffer1;
- ASCIIEncoding encoder = new ASCIIEncoding();
- buffer = encoder.GetBytes("LobbyName");
- clientStream.Write(buffer, 0, buffer.Length);
- byte[] message = new byte[4096];
- int bytesRead;
- String client_msg = null;
- if (count == 0)
- {
- buffer = encoder.GetBytes("no_lobbies");
- clientStream.Write(buffer, 0, buffer.Length);
- }
- else
- {
- buffer = encoder.GetBytes("enum_lobbies_EOF");
- int i = 0;
- String lobby_list;
- while (i < count)
- {
- lobby_list = "Lobby name: " + lobbies[i].lobby_name + " number of players: " + lobbies[i].players + " Lobbie number: " + lobbies[i].objectNumber + "\n";
- Console.WriteLine(lobby_list);
- buffer1 = encoder.GetBytes(lobby_list);
- clientStream.Write(buffer1, 0, buffer1.Length);
- i++;
- }
- clientStream.Write(buffer, 0, buffer.Length);
- #region Client read
- while (true)
- {
- bytesRead = 0;
- try
- {
- //blocks until a client sends a message
- bytesRead = clientStream.Read(message, 0, 4096);
- Console.WriteLine(bytesRead);
- }
- catch
- {
- //a socket error has occured
- break;
- }
- if (bytesRead == 0)
- {
- //the client has disconnected from the server
- Console.WriteLine("errorr1!!!!");
- break;
- }
- if (bytesRead > 0)
- {
- client_msg = encoder.GetString(message, 0, bytesRead);
- Console.WriteLine("Join lobby command " + client_msg);
- switch (client_msg.ToLower())
- {
- case "join":
- ///blah
- buffer1 = encoder.GetBytes("lobbynum");
- clientStream.Write(buffer1, 0, buffer1.Length);
- #region Read from client
- while (true)
- {
- bytesRead = 0;
- try
- {
- //blocks until a client sends a message
- bytesRead = clientStream.Read(message, 0, 4096);
- Console.WriteLine(bytesRead);
- }
- catch
- {
- //a socket error has occured
- break;
- }
- if (bytesRead == 0)
- {
- //the client has disconnected from the server
- Console.WriteLine("errorr1!!!!");
- break;
- }
- if (bytesRead > 0)
- {
- client_msg = encoder.GetString(message, 0, bytesRead);
- Console.WriteLine("Join Lobby: " + client_msg);
- i = 0;
- while (i < count)
- {
- try
- {
- if (lobbies[i].objectNumber == Convert.ToInt32(client_msg))
- {
- buffer1 = encoder.GetBytes("joined lobby: " + lobbies[i].objectNumber);
- Console.WriteLine("i'm here!");
- clientStream.Write(buffer1, 0, buffer1.Length);
- lobbies[i].ready = true;
- lobbies[i].tcpPlayer2 = clientStream;
- lobbies[i].players = 2;
- lobbies[i]
- //lobbies[i].start_game();
- startGame(lobbies[i].tcpPlayer2, i);
- lobbies[i].ready = true;
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex);
- }
- i++;
- }
- buffer1 = encoder.GetBytes("unable to join lobby");
- try
- {
- clientStream.Write(buffer1, 0, buffer1.Length);
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex);
- }
- }
- }
- #endregion
- break;
- case "GetLobbies":
- break;
- default:
- buffer1 = encoder.GetBytes("invalid");
- clientStream.Write(buffer1, 0, buffer1.Length);
- continue;
- }
- }
- #endregion
- }
- }
- }
- private String Login(NetworkStream clientStream)
- {
- MySqlConnection conn = database();
- Console.WriteLine("Login Screen");
- byte[] buffer;
- byte[] buffer1;
- ASCIIEncoding encoder = new ASCIIEncoding();
- buffer = encoder.GetBytes("UserName");
- clientStream.Write(buffer, 0, buffer.Length);
- bool un = false;
- byte[] message = new byte[4096];
- int bytesRead;
- String client_msg = null;
- //buffer = encoder.GetBytes("enum_lobbies_EOF");
- int i = 0;
- while (true)
- {
- bytesRead = 0;
- try
- {
- //blocks until a client sends a message
- bytesRead = clientStream.Read(message, 0, 4096);
- Console.WriteLine(bytesRead);
- }
- catch
- {
- //a socket error has occured
- break;
- }
- if (bytesRead == 0)
- {
- //the client has disconnected from the server
- Console.WriteLine("errorr1!!!!");
- break;
- }
- #region username and password
- if (bytesRead > 0)
- {
- client_msg = encoder.GetString(message, 0, bytesRead);
- String client_cmd = client_msg;
- Console.WriteLine("login");
- switch (client_msg.ToLower())
- {
- case "username":
- ///blah
- buffer1 = encoder.GetBytes("send username");
- clientStream.Write(buffer1, 0, buffer1.Length);
- #region Read from client
- while (true)
- {
- bytesRead = 0;
- try
- {
- //blocks until a client sends a message
- bytesRead = clientStream.Read(message, 0, 4096);
- Console.WriteLine(bytesRead);
- }
- catch
- {
- //a socket error has occured
- break;
- }
- if (bytesRead == 0)
- {
- //the client has disconnected from the server
- Console.WriteLine("errorr1!!!!");
- break;
- }
- if (bytesRead > 0)
- {
- client_msg = encoder.GetString(message, 0, bytesRead);
- Console.WriteLine("User name: " + client_msg);
- i = 0;
- MySqlCommand command = conn.CreateCommand();
- MySqlDataReader reader;
- #region username
- Console.WriteLine("i'm here!");
- command.CommandText = "Select * from user Where UserName='" + client_msg + "'";
- try
- {
- conn.Open();
- reader = command.ExecuteReader();
- Console.WriteLine("i'm here!2");
- while (reader.Read()) //take the sql and make sure the username exists
- {
- Console.WriteLine("i'm here!3");
- Console.WriteLine(reader["UserName"] + " : " + client_msg);
- String result = reader["UserName"].ToString();
- if (client_msg.Equals(result, StringComparison.Ordinal))
- {
- Console.WriteLine("woot! matching username!");
- buffer1 = encoder.GetBytes("send password");
- clientStream.Write(buffer1, 0, buffer1.Length);
- try
- {
- //conn.Open();
- //reader.Close();
- //reader = command.ExecuteReader();
- while (true)
- {
- bytesRead = 0;
- try
- {
- //blocks until a client sends a message
- bytesRead = clientStream.Read(message, 0, 4096);
- Console.WriteLine(bytesRead);
- }
- catch
- {
- //a socket error has occured
- break;
- }
- if (bytesRead == 0)
- {
- //the client has disconnected from the server
- Console.WriteLine("errorr1!!!!");
- break;
- }
- if (bytesRead > 0)
- {
- client_msg = encoder.GetString(message, 0, bytesRead);
- String password = reader["Password"].ToString();
- Console.WriteLine("password: " + client_msg + " : " + password);
- if (password.Equals(client_msg, StringComparison.Ordinal))
- {
- Console.WriteLine("woot! matching password!");
- buffer1 = encoder.GetBytes("login_suc");
- clientStream.Write(buffer1, 0, buffer1.Length);
- return reader["UserName"].ToString();
- // do some profile stuff here?
- break;
- }
- else
- {
- return "INVALID";
- }
- }
- }
- break;
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex);
- }
- }
- }
- break;
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex);
- }
- #endregion
- }
- }
- #endregion
- break;
- default:
- buffer1 = encoder.GetBytes("invalid");
- clientStream.Write(buffer1, 0, buffer1.Length);
- continue;
- }
- }
- #endregion
- break;
- }
- return "INVALID";
- }
- private void UpdateProfile(NetworkStream clientStream, String username)
- {
- }
- private void GetProfile(NetworkStream clientStream, String username)
- {
- }
- //Player client1 = new Player();
- //Player client2 = new Player();
- private static void Main(string[] args)
- {
- Server derp = new Server();
- derp.Server_start();
- //derp.database();
- }
- }
- }
Add Comment
Please, Sign In to add comment