Member 13496560 Ответов: 1

Настройка конфигурации сервера и клиентского приложения срочная справка TCP


- Привет. Я создал приложение tcp-чата,где оно имеет два конца.Один-сервер, а другой-клиент,где серверное приложение основано на консольном окне и будет работать на сервере, а клиентское приложение-это настольное приложение, которое будет работать на клиенте.

Мой проект отлично работает на моем ноутбуке, когда я использовал localhost в качестве конечной точки как для сервера, так и для клиента.Но когда я запускаю это на двух разных ноутбуках, где оба ноутбука подключены к одному и тому же Wi-Fi. Где приложение sever работает на серверном ноутбуке, а клиентское приложение работает на клиентском ноутбуке.
Но когда клиентское приложение каждый раз выходит из строя,это означает, что оно не нашло никакого соединения с серверным ноутбуком.Я также добавляю входящие правила для разрешения подключений на порту 9000 в настройках брандмауэра, но я не нашел никакой помощи.Пожалуйста помогите мне срочно

Вот мои настройки конфигурации клиента... где 192.168.0.106-IP-адрес моего сервера

<?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://192.168.0.106: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>


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

Я испробовал много методов.Я пытался использовать разные ноутбуки.Но все равно я не нашел никакого решения.

F-ES Sitecore

Начните с самого начала...может ли клиент подключиться к порту 9000 на сервере? Вы можете использовать telnet для проверки этого (возможно, вам придется установить его).

Member 13496560

Спасибо за ваш ответ, не могли бы вы описать подробнее? Я попытался пинговать ip-порт сервера с помощью cmd, но он говорит об ошибке тайм-аута

F-ES Sitecore

1) на клиентском ноутбуке удерживайте нажатой клавишу Windows и нажмите клавишу R
2) введите "cmd" в поле выполнить (без кавычек) и нажмите клавишу enter
3) в черном поле введите (опять же без кавычек) "telnet 192.168.0.106 9000" и нажмите enter
4) Если вы получаете сообщение об ошибке, говорящее, что telnet не распознается как внутренняя или внешняя команда, то установите его из функций windows (я погуглил, как это сделать для вас, так что вам не нужно https://technet.microsoft.com/en-us/library/cc771275(в=ВУ.10).aspx-файл Теперь вернитесь к шагу 3.

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

Member 13496560

Да, я попробовал следующие шаги.Во-первых, он давал ошибку по команде telnet . После установки клиента telnet я сделал тот же Шаг 3, а затем курсор просто продолжает мигать...
Итак, можете ли вы сказать мне, как сделать настройку конфигурации в моем проекте? я могу отправить вам свой проект по электронной почте

F-ES Sitecore

Вы можете просто ввести какой-нибудь мусор и нажать enter, и если вы получите ответ любого рода, даже ошибку, но если вы не получаете ошибку подключения, то служба, вероятно, работает нормально, и клиент тоже может видеть сервер. Убедитесь, что IP\порт, к которому вы подключаетесь, нигде не жестко подключен в коде и что вы действительно пытаетесь подключиться к правильному IP. Вы можете использовать что-то вроде wireshark для анализа сетевого трафика, Чтобы убедиться, что он делает то, что вы думаете.

Member 13496560

о'кей, сэр, когда я набираю имя пользователя и нажимаю на login thn, клиентское приложение падает на клиентском ноутбуке.Мне должно быть нужно решение для проекта последнего года.Не могли бы вы сделать это для меня? я вышлю вам по электронной почте весь проект со всем видео-сценарием. Я буду вам очень благодарен,я знаю, что не должен просить вас о таких усилиях, но мне действительно нужно запустить этот проект.Этот проект отлично работает,когда я использовал его на одном ноутбуке с loopback localhost, но я не могу запустить его на двух разных ноутбуках... Я все еще ценю твои усилия.
Вы можете просто предоставить мне видео настройки проекта...Я жду вашего ответа

1 Ответов

Рейтинг:
1

phil.o

В настройках конфигурации сервера вы можете попробовать

<service name="ChattingServer.ChattingService">
    <endpoint address="net.tcp://192.168.0.106:9000/ChattingService"
        binding="netTcpBinding" bindingConfiguration="" name="ChattingServiceEndPoint"
        contract="ChattingInterfaces.IChattingService" />
</service>
вместо этого, и посмотреть, куда это приведет вас :)
Даже если 127.0.0.1 и 192.168.0.106 представляют один и тот же хост, они не являются одним и тем же адресом; поэтому служба, привязанная к адресу localhost, автоматически не привязывается к другим адресам на том же хосте.
Любезно.


Member 13496560

О'Кей, дорогой, я попробовал то же самое, но все равно клиентское приложение падает, как будто сервер не работает.Я пробовал на разных ноутбуках с разными операционными системами windows 7, но до сих пор проблема не решена.

phil.o

Я не вижу никакого очевидного решения, вы должны исследовать, чтобы решить эту проблему. Только вы можете исследовать, плюс вы узнаете намного больше, если сделаете это.
Поэтому я бы сначала телнет 192.168.0.106 9000 на сервере во-первых, посмотрите, возможно ли соединение отсюда. Если все в порядке с сервера, то тот же telnet, но на этот раз с удаленного компьютера... Вы также можете попробовать запустить сервер с повышенными привилегиями в случае возможной проблемы привязки, вызванной недостаточными правами... Найдите виновника, и вы будете на полпути к разгадке.