У меня есть простое клиентское/серверное приложение TCP. Как настроить две программы на стороне сервера, для этого требуется имя пользователя и пароль, а когда клиент пытается подключиться, они должны ввести правильное имя пользователя и пароль и отправить его на сервер, на стороне сервера проверьте, правильно ли это имя пользователя и пароль, если это правильно, то он разрешает соединение, в противном случае он отклоняет соединение.C# TCP/IP-сервер и клиент
ответ
Это невозможно сделать с использованием простого TCP/IP. Вам придется либо изобретать какой-то протокол, либо использовать WCF или тому подобное.
Поскольку «соединение» происходит до того, как что-либо может быть отправлено, нет способа отправить учетные данные «вместе со связью». Вам нужно будет подключиться к клиенту, получить команду «Вход», проверить учетные данные и передать уникальный идентификатор, который затем необходимо отправить вместе с каждой командой, чтобы сервер мог проверить, был ли клиент аутентифицирован. Вот как я сделал бы это, если бы WCF не был вариантом.
Белый Торстен технически правильно, я все еще думаю, что есть решение:
Пусть сервер принимает все соединения, но затем ожидать, как первые данные в связи с этим имя пользователя и пароль. Если они неверны, сервер будет закрывать соединение и не обрабатывать какие-либо запросы, которые клиент мог отправить в соединение.
*** scratchhead *** Разве это не эквивалентно тому, что я сказал, включая мои комментарии? –
Не совсем. OP занимается использованием несанкционированных соединений. Поэтому, указывая на то, что на самом деле это имя пользователя и пароль (а не «учетные данные»), и указывая, что вы закрываете соединение, когда учетные данные неверны, могут быть ключом к пониманию. Кроме того, я не вижу смысла использовать файлы cookie здесь. –
Используйте WCF, так как вы, очевидно, раньше не использовали чистые сокеты. Скорее всего, это будет более стабильное решение, если вы попытаетесь изучить сокеты и придумаете свой собственный протокол.
Вы можете использовать WCF вместе с netTcpBinding для достижения желаемого. У вас есть пример здесь: http://www.dotnetspider.com/resources/19314-Client-server-sample-using-WCF-net-tcp-binding.aspx
Прошу прощения, если это был не тот ответ, который вам нужен, но есть много, что необходимо выполнить правильно, чтобы получить бесплатное решение для клиент/сервер tcp/ip ,
- 1. C сервер и java-клиент
- 2. C# сервер и клиент сокета
- 3. сервер и клиент в Python и C
- 4. Клиент C++ JMS или клиент SOAP C++/C
- 5. UDP-клиент-клиент в C++/Qt
- 6. Что означает (конечный клиент c = новый клиент();)?
- 7. Socketio - сервер флагов и клиент C#
- 8. java.lang.NullPointerException - сервер Java и клиент C
- 9. C++ irc клиент async читать и писать
- 10. C# мыльный веб-сервис и клиент Java
- 11. C# .NET Remoting Server и Java-клиент
- 12. TCP-клиент и серверы в C
- 13. Как настроить сервер C# и клиент vbscript
- 14. C# Сервер и клиент TCP/IP
- 15. Клиент и сервер WebSocket C++ Lib
- 16. TCP-сервер и клиент C# Best Practice
- 17. Клиент Java и сервер c не подключены
- 18. C# UdpClient сервер и клиент вопрос
- 19. C# сервер и клиент не работают
- 20. Сервер RPC C++ и клиент Python
- 21. Веб-сервис C# Rest и клиент Android
- 22. Клиент-серверное приложение с Swift и C++
- 23. C# OPC клиент shutdown
- 24. Простой клиент C# RESTfull
- 25. Клиент WinSock C
- 26. C# Клиент - маршрут Chooser
- 27. DNS-клиент в C
- 28. C# Restful Клиент
- 29. Клиент REST в C
- 30. Клиент Hazelcast C++
У меня есть элемент управления входами, где пользователь должен ввести имя пользователя и пароль, но проблема в том, что любой может просто сделать программу для подключения к определенному ip-адресу с правильным портом, и у них будет подключение к нему. Вот почему я хотел, чтобы серверная сторона была вместо chc, прежде чем разрешить подключение – user464111
Я знаю, чего вы пытаетесь достичь, но этого просто не может быть сделано с использованием TCP/IP, только вы не определяете какой-то протокол по TCP/IP. Как я уже сказал, вы можете начать «сеанс» на сервере для каждого клиента (который вы все равно должны были бы реагировать на сервер). Если клиент аутентифицирован правильно, принимайте и выполняйте другие команды, но «Логин», в противном случае - нет. Вы можете либо отправить клиенту маркер, который вы предоставили после успешного входа в систему, либо сервер «помнить» успешно прошедших проверку подлинности клиентов. –