Проблема с обнаружением сервера C#

Всем привет! При программировании сервера и клиента с помощью TcpListener и TcpClient у меня произошла ошибка. Как видно из кода сервера и клиента, сначала я задаю TcpListener и TcpClient по введённому IP-адресу и порту. Так вот - если я при просьбе ввести IP сервера ввожу что то кроме 127.0.0.1, то программа выдаёт:

Произошла ошибка SocketException - Требуемый адрес для своего контекста неверен.

Вот код сервера (не обращайте внимания на /troll и "ЗДАРОВА!!!":

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

namespace Server
{
    internal class Program
    {
        static void Main(string[] args)
        {

            TcpListener tcp = null;
            try
            {
                IPAddress ip;
                int port;
                Console.WriteLine("Введите IPv4 адрес:");
                string ipAddress = Console.ReadLine().ToString();
                Console.WriteLine("Введите порт:");
                port = Convert.ToInt32(Console.ReadLine());
                ip = IPAddress.Parse(ipAddress);
                tcp = new TcpListener(ip, port);
                tcp.Start();
                Console.WriteLine($"Сервер {tcp.Server.LocalEndPoint} запущен!");

                while (true)
                {
                    Socket client = tcp.AcceptSocket();
                    Console.WriteLine($"Клиент {client.RemoteEndPoint} был подключён");
                    client.Send(Encoding.Default.GetBytes("ЗДАРОВА!!!"));

                    Console.WriteLine($"Начало работы с {client.RemoteEndPoint}:");
                    while (true)
                    {
                        string str = Console.ReadLine().ToString();
                        byte[] buffer = Encoding.Default.GetBytes(str);
                        if (str.ToLower() == "/troll")
                        {
                            for (int i = 1; i <= 400; i++)
                                client.Send(Encoding.Default.GetBytes("ХАХХАХАХАХА!!!"));
                        }
                        else if (str.ToLower() == "/exit")
                        {
                            Console.WriteLine($"Работа с {client.RemoteEndPoint} прекращена");
                        }
                        else
                        {
                            client.Send(buffer);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"Произошла ошибка {e.GetType().Name} - {e.Message}");
            }
            finally
            {
                tcp.Dispose();
                tcp.Stop();
                Thread.Sleep(1000);
                Environment.Exit(0);
            }
        }
    }
}

А вот клиента:

using System;
using System.Net;
using System.Net.Http.Headers;
using System.Net.Sockets;
using System.Text;

namespace Client
{
    internal class Program
    {
        static TcpClient tcp = new TcpClient();
        static void Main(string[] args)
        {
            for (; ; )
            {
                try
                {
                    IPAddress ip;
                    int port;
                    Console.WriteLine("Введите IPv4 адрес:");
                    string ipAddress = Console.ReadLine().ToString();
                    Console.WriteLine("Введите порт:");
                    port = Convert.ToInt32(Console.ReadLine());

                    ip = IPAddress.Parse(ipAddress);
                    tcp.Connect(new IPEndPoint(ip, port));
                    Console.WriteLine($"Клиент подключён!");

                    NetworkStream ns = tcp.GetStream();
                    byte[] buffer = new byte[1024];
                    Console.WriteLine("Поступающие данные:\n");
                    while (true)
                    {
                        if (Console.ReadKey().Key == ConsoleKey.Q)
                            break;
                        ns.Read(buffer, 0, buffer.Length);
                        Console.WriteLine(Encoding.Default.GetString(buffer).ToString());
                        Array.Clear(buffer);
                    }

                    break;
                }
                catch (Exception e)
                {
                    Console.WriteLine($"Ошибка {e.HResult} по причине \"{e.Message}\"\n");
                }
            }

            tcp.Close();
            Console.WriteLine("Клиент завершил работу");
            Thread.Sleep(1000);
            Environment.Exit(0);
        }
    }
}

P.S - Хотелось чтобы сервер был расположен на адресе 192.168.x.x


Ответы (0 шт):