Как я могу изменить локальный сервер C # хоста для работы на выделенном сервере? - PullRequest
0 голосов
/ 29 апреля 2019

Я сейчас в игровом джеме, где нам нужно построить многопользовательское подземелье. У меня уже есть локальный хост-сервер и клиент, работающий после хорошего примера https://www.geeksforgeeks.org/socket-programming-in-c-sharp/. Благодаря владельцам игровых джемов я также получил пару месяцев бесплатного хостинга на Digital Ocean. Поэтому мне было интересно, как я могу изменить код для работы на серверах Digital Ocean.

Вот код, опять же, это не мой код, я следовал по ссылке выше и собираюсь интегрировать ее в игру ascii, которую собираюсь собрать

Код сервера:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace Network_Test_server
{
class Program
{
    static void Main(string[] args)
    {
        ExecuteServer();
    }

    public static void ExecuteServer()
    {
        IPHostEntry iPHost = Dns.GetHostEntry(Dns.GetHostName());
        IPAddress iPAddress = iPHost.AddressList[0];
        IPEndPoint localEndPoint = new IPEndPoint(iPAddress, 11111);

        Socket listener = new Socket(iPAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
        try { 
        listener.Bind(localEndPoint);
        listener.Listen(10);

        while (true)
        {
            Console.WriteLine("Waiting connection...");
            Socket clientSocket = listener.Accept();

            //data buffer
            byte[] bytes = new Byte[1024];
            string data = null;

            while (true)
            {
                int numByte = clientSocket.Receive(bytes);
                data += Encoding.ASCII.GetString(bytes, 0, numByte);
                if (data.IndexOf("<EOF>") > -1) break;
            }
            Console.WriteLine("Text received -> {0} ", data);

            //sends data back to client  
            byte[] message = Encoding.ASCII.GetBytes("Test Server");
            clientSocket.Send(message);

            clientSocket.Shutdown(SocketShutdown.Both);
            clientSocket.Close();
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
    }
}
}

Вот код клиента

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace Network_Test_Client
{
class Program
{
    static void Main(string[] args)
    {
        ExecuteClient();
    }

    static void ExecuteClient()
    {
        try
        {
            IPHostEntry iPHost = Dns.GetHostEntry(Dns.GetHostName());
            IPAddress iPAddress = iPHost.AddressList[0];
            IPEndPoint localEndPoint = new IPEndPoint(iPAddress, 
         11111);

            Socket sender = new Socket(iPAddress.AddressFamily, 
         SocketType.Stream, ProtocolType.Tcp);

            try
            {
                sender.Connect(localEndPoint);

                Console.WriteLine("Socket connected to -> {0}", sender.RemoteEndPoint.ToString());

                //send to server
                byte[] messageSent = Encoding.ASCII.GetBytes("Test Client<EOF>");
                int byteSent = sender.Send(messageSent);

                //data buffer
                byte[] messageReceived = new byte[1024];

                int byteRecv = sender.Receive(messageReceived);
                Console.WriteLine("Message from Server -> {0}", Encoding.ASCII.GetString(messageReceived, 0, byteRecv));

                sender.Shutdown(SocketShutdown.Both);
                sender.Close();
            }
            catch (AggregateException ane)
            {
                Console.WriteLine("ArgumentNullException : {0}", ane.ToString());
            }
            catch (SocketException se)
            {

                Console.WriteLine("SocketException : {0}", se.ToString());
            }

            catch (Exception e)
            {
                Console.WriteLine("Unexpected exception : {0}", e.ToString());
            }
        }

        catch (Exception e)
        {

            Console.WriteLine(e.ToString());
        }

    }

}


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...