Created
January 14, 2018 13:28
-
-
Save Khaledgarbaya/e8f0cbca955acfbf64fd4b02524ca87a to your computer and use it in GitHub Desktop.
GameServer.csharp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Net; | |
using System.Net.Sockets; | |
using System.Text; | |
using System.Threading.Tasks; | |
namespace GameServer | |
{ | |
class Program | |
{ | |
// Incoming data from the client. | |
public static string data = null; | |
public static void StartListening() | |
{ | |
// Data buffer for incoming data. | |
byte[] bytes = new Byte[1024]; | |
// Establish the local endpoint for the socket. | |
// Dns.GetHostName returns the name of the | |
// host running the application. | |
IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName()); | |
IPAddress ipAddress = ipHostInfo.AddressList[0]; | |
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000); | |
// Create a TCP/IP socket. | |
Socket listener = new Socket(ipAddress.AddressFamily, | |
SocketType.Stream, ProtocolType.Tcp); | |
// Bind the socket to the local endpoint and | |
// listen for incoming connections. | |
try | |
{ | |
listener.Bind(localEndPoint); | |
listener.Listen(10); | |
// Start listening for connections. | |
while (true) | |
{ | |
Console.WriteLine("Waiting for a connection..."); | |
// Program is suspended while waiting for an incoming connection. | |
Socket handler = listener.Accept(); | |
data = null; | |
// An incoming connection needs to be processed. | |
while (true) | |
{ | |
bytes = new byte[1024]; | |
int bytesRec = handler.Receive(bytes); | |
data = Encoding.ASCII.GetString(bytes, 0, bytesRec); | |
if (data.IndexOf("<EOF>") > -1) | |
{ | |
break; | |
} | |
// Show the data on the console. | |
Console.WriteLine("Text received : {0}", data); | |
// Echo the data back to the client. | |
byte[] msg = Encoding.ASCII.GetBytes(data); | |
handler.Send(msg); | |
} | |
handler.Shutdown(SocketShutdown.Both); | |
handler.Close(); | |
} | |
} | |
catch (Exception e) | |
{ | |
Console.WriteLine(e.ToString()); | |
} | |
Console.WriteLine("\nPress ENTER to continue..."); | |
Console.Read(); | |
} | |
public static int Main(String[] args) | |
{ | |
StartListening(); | |
return 0; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment