Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Created by SharpDevelop.
- * User: Jamel
- * Date: 7/12/2015
- * Time: 10:43 PM
- *
- * To change this template use Tools | Options | Coding | Edit Standard Headers.
- */
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Net;
- using System.Net.Sockets;
- using System.Text;
- using MySql.Data.MySqlClient;
- namespace LoginServer
- {
- class LoginServer
- {
- static LoginServer singleton;
- private Socket serverSocket = null;
- //mysql connection string
- ArrayList _connections = new ArrayList();
- ArrayList _buffer = new ArrayList();
- ArrayList _byteBuffer = new ArrayList();
- static void Main(string[] args) {
- LoginServer serverInstance = new LoginServer();
- serverInstance.SetupServer();
- while(true) {
- serverInstance.HoldListening();
- }
- Console.ReadLine();
- }
- private void SetupServer() {
- serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- IPEndPoint ipLocal = new IPEndPoint(IPAddress.Any, 32211);
- serverSocket.Bind(ipLocal);
- serverSocket.Listen(100);
- singleton = this;
- Console.WriteLine("Server started on: "+ipLocal.ToString()+":3221");
- }
- private void HoldListening() {
- ArrayList listenList = new ArrayList();
- listenList.Add(serverSocket);
- Socket.Select(listenList, null, null, 1000);
- for(int i = 0; i < listenList.Count; i++) {
- Socket newSocket = ((Socket)listenList[i]).Accept();
- _connections.Add(newSocket);
- _byteBuffer.Add(new ArrayList());
- Console.WriteLine("New connection dorm: "+newSocket.LocalEndPoint.ToString());
- }
- }
- private void ReadData() {
- if(_connections.Count > 0) {
- ArrayList connections = new ArrayList(_connections);
- Socket.Select(connections, null, null, 1000);
- foreach(Socket socket in connections) {
- byte[] receivedBytes = new byte[512];
- ArrayList buffer = (ArrayList)_byteBuffer[_connections.IndexOf(socket)];
- int read = socket.Receive(receivedBytes);
- for(int i = 0; i < read; i++) {
- buffer.Add(receivedBytes[i]);
- }
- while(true && buffer.Count > 0) {
- int length = (byte)buffer[0];
- if(length < buffer.Count) {
- ArrayList thisMsgBytes = new ArrayList(buffer);
- thisMsgBytes.RemoveRange(length+1, thisMsgBytes.Count-(length+1));
- thisMsgBytes.RemoveRange(0,1);
- if(thisMsgBytes.Count != length) {
- Console.WriteLine("Error here");
- }
- buffer.RemoveRange(0, length+1);
- byte[] readBytes = (byte[])thisMsgBytes.ToArray(typeof(byte));
- MessageData readMsg = MessageData.FromByteArray(readBytes);
- buffer.Add(readMsg);
- Console.WriteLine("Message of type {0}: {1}", readMsg.type, readMsg.stringData);
- //TODO: HandleReceivedPacket();
- if(singleton != this) {
- Console.WriteLine("Error here");
- }
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment