@Andronron

Как установить соединение с сервером Windows по TCP?

Здравствуйте, хочу установить связь с сервером на Win Server ... при дебаге на локальном компьютере приложение работает ( Использую IP 127.0.0.1 в клиенте) - соединение клиент приложения и сервер приложение происходит

После сборки и копирование серверного приложения на Win Server от амазон, добавил Public Ip Address (указан в правом углу на рабочем столе сервера).... в клиентское приложение и Получаю такое исключение :
System.Net.Sockets.SocketException: 'Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера
. Где у меня ошибка ?

Мой код :
Server
TcpListener server = null;

try
{

    Int32 port = 7000;

    server = new TcpListener(IPAddress.Any, port);
    server.Start();

    // Buffer for reading data
    Byte[] bytes = new Byte[512];
    String data = null;

    // Enter the listening loop.
    while (true)
    {
        Console.Write("Waiting for a connection... ");

        // Perform a blocking call to accept requests.
        // You could also use server.AcceptSocket() here.
        using var client = await server.AcceptTcpClientAsync();

        NetworkStream ns = client.GetStream();

        byte[] msg = new byte[1024];              // готовим место для принятия сообщения
        int count = ns.Read(msg, 0, msg.Length);


        string message = Encoding.Default.GetString(msg, 0, count).Trim(); // читаем сообщение от клиента

        // для получения и отправки сообщений


        byte[] hello = new byte[100];
        hello = Encoding.Default.GetBytes("hello world");


        ns.Write(hello, 0, hello.Length); 

    }
}
catch (SocketException e)
{
    Console.WriteLine("SocketException: {0}", e);
}
finally
{
    server.Stop();
}

клиент
try
            {
                string machineName = new DeviceIdBuilder()
                    .AddMachineName()
                    .AddMacAddress()
                    .ToString();

              // "15.188.63.174" - public address
                TcpClient client = new TcpClient("15.188.63.174", 7000);

                Byte[] data = System.Text.Encoding.ASCII.GetBytes(machineName);

                NetworkStream stream = client.GetStream();

                // Send the message to the connected TcpServer.
                stream.Write(data, 0, data.Length);

                // Buffer to store the response bytes.
                var  dataBuffer = new Byte[225];

                // String to store the response ASCII representation.
                String responseData = String.Empty;

                Int32 bytes = stream.Read(dataBuffer, 0, dataBuffer.Length);

                responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);

                // Close everything.
                stream.Close();
                client.Close();
            }
            catch
            { 
                return false;
            }
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 2
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
Надо открыть порт в настройках сервера в консоли AWS, если правильно помню - это делается в группе безопасности, в которой находится сервер.
Ответ написан
Комментировать
freeExec
@freeExec
Участник OpenStreetMap
Не знаю как там точно на амазоне, но обычно в таких случаях необходимо пробросить порт на внешку, просто так светить всё в интернет не разумно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы