Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Net;
- using System.Net.Sockets;
- namespace jM2
- {
- class Server
- {
- private Socket serverSocket;
- private HashSet<int> connectionsList;
- private string serverIP;
- private int serverPort;
- public Server(string serverIP, int serverPort)
- {
- this.serverIP = serverIP;
- this.serverPort = serverPort;
- connectionsList = new HashSet<int>();
- serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- IPEndPoint ipEnd = new IPEndPoint(IPAddress.Parse(this.serverIP), this.serverPort);
- serverSocket.Bind(ipEnd);
- Console.WriteLine("======================================================");
- Console.WriteLine("=== Socket created ===================================");
- Console.WriteLine("======================================================");
- Console.WriteLine("\tIP: " + serverIP);
- Console.WriteLine("\tPort: " + serverPort.ToString());
- Console.WriteLine();
- }
- public void Start()
- {
- serverSocket.Listen(8);
- Console.WriteLine("======================================================");
- Console.WriteLine("=== Server is now listening for connections ==========");
- Console.WriteLine("======================================================");
- Console.WriteLine();
- serverSocket.BeginAccept(new AsyncCallback(connectionRequest), serverSocket);
- }
- public void Connections()
- {
- for (int i = 1; i < 100; i++)
- {
- if (connectionsList.Contains(i))
- {
- Console.WriteLine("Connection on CID: " + i.ToString());
- }
- }
- }
- public void Stop()
- {
- // Not implemented yet
- }
- private void connectionRequest(IAsyncResult iar)
- {
- int connectionID = 0;
- for (int i = 1; i < 100; i++)
- {
- if (connectionsList.Contains(i) == false)
- {
- connectionID = i;
- break;
- }
- }
- if (connectionID > 0)
- {
- Socket connectionSocket = ((Socket)iar.AsyncState).EndAccept(iar);
- connectionsList.Add(connectionID);
- Console.WriteLine("======================================================");
- Console.WriteLine("=== New connection ===================================");
- Console.WriteLine("======================================================");
- Console.WriteLine("\tRemote IP: " + connectionSocket.RemoteEndPoint.ToString().Split(':')[0]);
- Console.WriteLine("\tRemote Port: " + connectionSocket.RemoteEndPoint.ToString().Split(':')[1]);
- Console.WriteLine();
- Client myClient = new Client(connectionID, connectionSocket);
- }
- serverSocket.BeginAccept(new AsyncCallback(connectionRequest), serverSocket);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement