Member 13496560 Ответов: 1

Я создал приложение LAN chat на WPF, и оно отлично работает на моем компьютере, но я не знаю, как использовать его на двух разных компьютерах.


Мои проекты нормально работает через локальный хост 127.0.0.1 зацикливается только на моем компьютере.
но как использовать это на двух разных компьютерах? и как сделать настройки конфигурации для этих компьютеров.А как соединить эти компьютеры друг с другом,я имею в виду, нужно ли там иметь маршрутизатор или кабель ethernet?

я следил за учебником отсюда: Приложение Для Обмена Мгновенными Сообщениями - Часть 1 - YouTube[^]

Вот конфигурация на стороне клиента

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    <system.serviceModel>
        <client>
            <endpoint address="net.tcp://127.0.0.1:9000/ChattingService"
                binding="netTcpBinding" bindingConfiguration="" contract="ChattingInterfaces.IChattingService"
                name="ChattingServiceEndPoint" kind="" endpointConfiguration="" />
        </client>
    </system.serviceModel>
</configuration>






Вот конфигурация на стороне сервера

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    
    <system.serviceModel>
        <services>
            <service name="ChattingServer.ChattingService">
                <endpoint address="net.tcp://127.0.0.1:9000/ChattingService"
                    binding="netTcpBinding" bindingConfiguration="" name="ChattingServiceEndPoint"
                    contract="ChattingInterfaces.IChattingService" />
            </service>
        </services>
    </system.serviceModel>
</configuration>


Что я уже пробовал:

Я попытался соединить два ноутбука с помощью кабеля ethernet.И дал им конкретный адресат

Для настройки ipv4 сервера ноутбука я сделал следующую конфигурацию:
Ip address: 192.168.0.1
subnet mask: 255.255.255.0
default gateway: 192.168.0.1

primary dns: blank
secondary dns :blank


На клиентском ноутбуке я сделал следующую конфигурацию на ipv4:
Ip address: 192.168.0.100
subnet mask: 255.255.255.0
default gateway: 192.168.0.1

primary dns: 192.168.0.1
secondary dns :blank

1 Ответов

Рейтинг:
0

David_Wimbley

Цитата:
,я имею в виду, что там обязательно должен быть маршрутизатор или кабель ethernet?


Я не саркастичен, но я не могу сказать, настоящий ли это вопрос или вопрос, сделанный из разочарования. Короче говоря, компьютеры должны быть каким-то образом соединены, чтобы общаться друг с другом. Если вы делаете это в 2 разных физических местах, то, конечно, вам понадобится маршрутизатор и либо Wi-Fi, либо жесткие проводные соединения.

Учитывая, что вы не написали код, и у меня нет доступа к вашему компьютеру. Если предположить, что приложения работают, то это довольно прямолинейно.

Вам нужно изменить XML конфигурации ваших клиентов, чтобы они не указывали на себя. Как вы уже упоминали, 127.0.0.1-это IP-адрес localhost/loop back. Если ваше приложение чат - сервера было перемещено на другой компьютер, то, надеюсь, будет очевидно, что оно больше не находится на IP-адресе 127.0.0.1.

Предполагая, 192.168.0.1 это IP-адрес сервера ad, ваш конфигурационный файл должен выглядеть так на клиентской машине
<endpoint address="net.tcp://192.168.0.1:9000/ChattingService"

                binding="netTcpBinding" bindingConfiguration="" contract="ChattingInterfaces.IChattingService"

                name="ChattingServiceEndPoint" kind="" endpointConfiguration="" />


Это звучит так, как будто вы сделали это, но я думаю, что другая точка, где вы застряли, - это брандмауэр сервера. Порт 9000 обычно не является обычным портом, поэтому вам, скорее всего, придется открыть этот порт на брандмауэре серверов, будь то на маршрутизаторе или Брандмауэре windows, вам нужно будет разрешить соединения на порту 9000 для tcp/udp.


Member 13496560

Спасибо за Ваш ответ, Дэвид...
Я получаю эту точку, чтобы поместить 192.168.0.1 на сервер config xml, когда он перемещается на другой ноутбук.Я пробовал много раз,но какой IP-адрес я должен использовать в конфигурации клиентского приложения?И я пытаюсь соединить два ноутбука с помощью кабеля Ethernet. И я отключил все свои брандмауэры windows, а также установил антивирус на обоих ноутбуках, а также открыл соединение для порта 9000 tcp/udp.Но все равно я не могу установить соединение между серверной и клиентской сторонами.

Вот это компьютер, сервер, параметры IPv4
Ip-адрес: 192.168.0.102
Маска подсети: 255.255.255.0
шлюз по умолчанию: 192.168.0.102

первичный: пустой
secondry dns: пусто

Вот конфигурационный код для сервера

<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    
    <system.serviceModel>
        <services>
            <service name="ChattingServer.ChattingService">
                <endpoint address="net.tcp://192.168.0.102:9000/ChattingService"
                    binding="netTcpBinding" bindingConfiguration="" name="ChattingServiceEndPoint"
                    contract="ChattingInterfaces.IChattingService" />
            </service>
        </services>
    </system.serviceModel>
</configuration>


А вот для клиента,где я использовал 192.168.0.103,который является статическим ip-адресом другого ноутбука,где работает клиентское приложение.

Вот это компьютер, сервер, параметры IPv4
Ip-адрес: 192.168.0.103
Маска подсети: 255.255.255.0
шлюз по умолчанию: 192.168.0.102
основной dns:192.168.0.102
secondry dns:пусто
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    <system.serviceModel>
        <client>
            <endpoint address="net.tcp://192.168.0.103:9000/ChattingService"
                binding="netTcpBinding" bindingConfiguration="" contract="ChattingInterfaces.IChattingService"
                name="ChattingServiceEndPoint" kind="" endpointConfiguration="" />
        </client>
    </system.serviceModel>
</configuration> 

Кроме того я прилагаю здесь свой полный проект https://www.dropbox.com/s/apnq18x19vlgac2/ChattingApplication.rar

David_Wimbley

Я не смотрел ваш код, но я думаю, что ваши проблемы находятся в конфигурации вашего клиента. Кроме того, вы можете сделать это сложнее, чем есть на самом деле.

Ваш компьютер и сервер должны знать друг друга "имена" (ip-адреса), чтобы общаться друг с другом. Вашей клиентской конфигурации говорят, что человек, с которым они разговаривают, - это он сам. IP - адрес вашего клиентского компьютера-192.168.0.103, и вы устанавливаете конечную точку службы чата для того, как ваше приложение wpf должно взаимодействовать с сервером как само по себе, что объяснило бы, что оно не работает, поскольку ваш клиентский компьютер также не запускает приложение сервера чата.

Ваша клиентская конфигурация, основанная на том,что вы описываете, должна заменить 192.168.0.103:9000 в адресе конечной точки на 192.168.0.102/9000, поскольку .102-это IP-адрес сервера, на который ваш клиент должен указывать/направлять свой трафик.

Как я уже упоминал ранее, у вас также есть/будет проблема закрытия портов на сервере, так как 9000 на самом деле не является обычным портом. Поэтому вам нужно будет убедиться, что ваш брандмауэр на сервере принимает трафик на порт 9000.


David_Wimbley

Просто обратите внимание, что вы просмотрели свои конфигурационные файлы в вашей загрузке dropbox. Оба ваших конфигурационных файла указывают на 127.0.0.1 в конфигурационных файлах сервера/клиента. Убедитесь, что вы обновили их соответствующим образом.

Member 13496560

О'Кей,Дорогой Дэвид, я полностью получил твои инструкции.И большое вам спасибо за краткое объяснение.Это сделало мою концепцию совершенно ясной, но здесь я задаю вам три вопроса.Получив их ответы, я пойму весь процесс...Я буду очень благодарен вам, человек.Мне нужна только определенная информация.Я потратил много времени на поиск ответов.Но все равно возникли некоторые недоразумения.

1-Сначала скажите мне, как разрешить серверу прослушивать порт 9000?

я сделал следующие шаги, описанные в < http://www.tomshardware.com/faq/id-3114787/open-firewall-ports-windows.html >

2 - не могли бы Вы описать физическое подключение двух ноутбуков?
я имею в виду, можете ли вы вести меня шаг за шагом, как соединить два ноутбука друг с другом.Для тестирования в обеих ситуациях внутри маршрутизатора и без маршрутизатора?

3-Как сделать конфигурацию Ipv4 на обоих ноутбуках.Должен ли я использовать статический IP-адрес для конфигурационного файла на стороне сервера? пошаговое руководство,и могу ли я использовать имя компьютера сервера вместо этого для размещения ip-адреса сервера?

Спасибо

David_Wimbley

1) Ваша ссылка, которую вы предоставили для открытия порта брандмауэра в Брандмауэре windows, верна. Там, где он запрашивает номер вашего порта, вы просто вводите 9000 на сервере для входящих подключений.

2) я не хочу, чтобы это прозвучало так, как будто я оскорбляю ваш интеллект, но как много сетей вы знаете? Вы действительно спрашиваете меня, как компьютеры общаются/должны общаться, или есть скрытый вопрос, который не передается?

Причина, по которой я задаю эти вопросы, заключается в том, что связь между 2 компьютерами довольно проста, и я думаю, что вы делаете эту проблему сложнее, чем она есть.

Что это такое, что вы делаете, что требует маршрутизатора?

Поэтому, если вы делаете это с 2 ноутбуками в вашем доме, предполагая, что у вас есть Wi-Fi...вам ничего не нужно делать в отношении подключения двух компьютеров вместе, чтобы они могли разговаривать друг с другом.

Даже если сервер находится вне сайта, скажем, в цетнере данных. Пока у вас есть этот IP-адрес сервера, внешний IP-адрес, вам не нужно беспокоиться о том, что делает ваш маршрутизатор (в разумных пределах, учитывая то, что вы пытаетесь сделать, вам не нужно беспокоиться о вашем маршрутизаторе).

3) Если ваши ноутбуки находятся в одном здании и находятся на вашем Wi-Fi в вашем доме, например, все, что вам нужно сделать, это использовать IP-адрес v4.

Например, мой адрес рабочего стола:
IPv4-Адрес. . . . . . . . . . . : 192.168.1.94

Таким образом, если бы мое чат-приложение имело сервер на моем рабочем столе, то ноутбук, на который я устанавливаю чат-клиент, указывал бы на мой IP-адрес 192.168.1.94.

Вы можете использовать имя хоста сервера/имя компьютера, но для ваших целей я бы предложил использовать IP-адрес, чтобы не усложнять ситуацию.

Member 13496560

Оки Дэвид я сделал то же самое,что и предложил, но когда я запускаю серверное приложение на 1-м ноутбуке и клиентское приложение на втором ноутбуке.Клиентское приложение аварийно завершает работу...я использовал команду net view /all в командной строке на стороне сервера, и она отображает как серверный ноутбук, так и другое имя ноутбука в списке (также на 2-м ноутбуке)...
Скажи мне, что теперь делать.
Я пробовал много раз,я пытался использовать имя хоста вместо IP-адреса,но все равно это не имеет для меня никакого смысла :( :( :(

Member 13496560

Эй, Дэвид,я все еще жду твоих инструкций, будь добр, сделай мне еще одно одолжение ... я буду очень благодарен тебе.