Advertisement
Guest User

Untitled

a guest
Feb 18th, 2011
465
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.32 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Net;
  7. using System.Net.Sockets;
  8.  
  9. namespace jM2
  10. {
  11.     class Server
  12.     {
  13.         private Socket serverSocket;
  14.         private HashSet<int> connectionsList;
  15.         private string serverIP;
  16.         private int serverPort;
  17.  
  18.  
  19.         public Server(string serverIP, int serverPort)
  20.         {
  21.             this.serverIP = serverIP;
  22.             this.serverPort = serverPort;
  23.  
  24.             connectionsList = new HashSet<int>();
  25.             serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  26.             IPEndPoint ipEnd = new IPEndPoint(IPAddress.Parse(this.serverIP), this.serverPort);
  27.             serverSocket.Bind(ipEnd);
  28.             Console.WriteLine("======================================================");
  29.             Console.WriteLine("=== Socket created ===================================");
  30.             Console.WriteLine("======================================================");
  31.             Console.WriteLine("\tIP: " + serverIP);
  32.             Console.WriteLine("\tPort: " + serverPort.ToString());
  33.             Console.WriteLine();
  34.         }
  35.         public void Start()
  36.         {
  37.             serverSocket.Listen(8);
  38.  
  39.             Console.WriteLine("======================================================");
  40.             Console.WriteLine("=== Server is now listening for connections ==========");
  41.             Console.WriteLine("======================================================");
  42.             Console.WriteLine();
  43.  
  44.             serverSocket.BeginAccept(new AsyncCallback(connectionRequest), serverSocket);
  45.         }
  46.         public void Connections()
  47.         {
  48.             for (int i = 1; i < 100; i++)
  49.             {
  50.                 if (connectionsList.Contains(i))
  51.                 {
  52.                     Console.WriteLine("Connection on CID: " + i.ToString());
  53.                 }
  54.             }
  55.         }
  56.         public void Stop()
  57.         {
  58.             // Not implemented yet
  59.         }
  60.         private void connectionRequest(IAsyncResult iar)
  61.         {
  62.             int connectionID = 0;
  63.             for (int i = 1; i < 100; i++)
  64.             {
  65.                 if (connectionsList.Contains(i) == false)
  66.                 {
  67.                     connectionID = i;
  68.                     break;
  69.                 }
  70.             }
  71.  
  72.             if (connectionID > 0)
  73.             {
  74.                 Socket connectionSocket = ((Socket)iar.AsyncState).EndAccept(iar);
  75.                 connectionsList.Add(connectionID);
  76.  
  77.                 Console.WriteLine("======================================================");
  78.                 Console.WriteLine("=== New connection ===================================");
  79.                 Console.WriteLine("======================================================");
  80.                 Console.WriteLine("\tRemote IP: " + connectionSocket.RemoteEndPoint.ToString().Split(':')[0]);
  81.                 Console.WriteLine("\tRemote Port: " + connectionSocket.RemoteEndPoint.ToString().Split(':')[1]);
  82.                 Console.WriteLine();
  83.  
  84.                 Client myClient = new Client(connectionID, connectionSocket);
  85.             }
  86.             serverSocket.BeginAccept(new AsyncCallback(connectionRequest), serverSocket);
  87.         }
  88.     }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement