gravvy

Untitled

Jul 13th, 2015
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.91 KB | None | 0 0
  1. /*
  2.  * Created by SharpDevelop.
  3.  * User: Jamel
  4.  * Date: 7/12/2015
  5.  * Time: 10:43 PM
  6.  *
  7.  * To change this template use Tools | Options | Coding | Edit Standard Headers.
  8.  */
  9. using System;
  10. using System.Collections;
  11. using System.Collections.Generic;
  12. using System.Net;
  13. using System.Net.Sockets;
  14. using System.Text;
  15. using MySql.Data.MySqlClient;
  16.  
  17. namespace LoginServer
  18. {
  19.     class LoginServer
  20.     {
  21.        
  22.         static LoginServer singleton;
  23.        
  24.         private Socket serverSocket = null;
  25.         //mysql connection string
  26.        
  27.         ArrayList _connections = new ArrayList();
  28.         ArrayList _buffer = new ArrayList();
  29.         ArrayList _byteBuffer = new ArrayList();
  30.        
  31.         static void Main(string[] args) {
  32.             LoginServer serverInstance = new LoginServer();
  33.             serverInstance.SetupServer();
  34.            
  35.             while(true) {
  36.                 serverInstance.HoldListening();
  37.             }
  38.            
  39.             Console.ReadLine();
  40.         }
  41.        
  42.         private void SetupServer() {
  43.             serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  44.             IPEndPoint ipLocal = new IPEndPoint(IPAddress.Any, 32211);
  45.             serverSocket.Bind(ipLocal);
  46.             serverSocket.Listen(100);
  47.             singleton = this;
  48.             Console.WriteLine("Server started on: "+ipLocal.ToString()+":3221");
  49.         }
  50.        
  51.         private void HoldListening() {
  52.             ArrayList listenList = new ArrayList();
  53.             listenList.Add(serverSocket);
  54.             Socket.Select(listenList, null, null, 1000);
  55.             for(int i = 0; i < listenList.Count; i++) {
  56.                 Socket newSocket = ((Socket)listenList[i]).Accept();
  57.                 _connections.Add(newSocket);
  58.                 _byteBuffer.Add(new ArrayList());
  59.                 Console.WriteLine("New connection dorm: "+newSocket.LocalEndPoint.ToString());
  60.             }
  61.         }
  62.        
  63.         private void ReadData() {
  64.             if(_connections.Count > 0) {
  65.                 ArrayList connections = new ArrayList(_connections);
  66.                 Socket.Select(connections, null, null, 1000);
  67.                 foreach(Socket socket in connections) {
  68.                     byte[] receivedBytes = new byte[512];
  69.                     ArrayList buffer = (ArrayList)_byteBuffer[_connections.IndexOf(socket)];
  70.                     int read = socket.Receive(receivedBytes);
  71.                     for(int i = 0; i < read; i++) {
  72.                         buffer.Add(receivedBytes[i]);
  73.                     }
  74.                     while(true && buffer.Count > 0) {
  75.                         int length = (byte)buffer[0];
  76.                         if(length < buffer.Count) {
  77.                             ArrayList thisMsgBytes = new ArrayList(buffer);
  78.                             thisMsgBytes.RemoveRange(length+1, thisMsgBytes.Count-(length+1));
  79.                             thisMsgBytes.RemoveRange(0,1);
  80.                             if(thisMsgBytes.Count != length) {
  81.                                 Console.WriteLine("Error here");
  82.                             }
  83.                             buffer.RemoveRange(0, length+1);
  84.                             byte[] readBytes = (byte[])thisMsgBytes.ToArray(typeof(byte));
  85.                             MessageData readMsg = MessageData.FromByteArray(readBytes);
  86.                             buffer.Add(readMsg);
  87.                             Console.WriteLine("Message of type {0}: {1}", readMsg.type, readMsg.stringData);
  88.                             //TODO: HandleReceivedPacket();
  89.                             if(singleton != this) {
  90.                                 Console.WriteLine("Error here");
  91.                             }
  92.                         }
  93.                     }
  94.                 }
  95.             }
  96.         }
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment