|
|
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Экспериментирую с классами ServerSocket и Socket. написал очень простой пример клиента и сервера: Сервер Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Клиент Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В таком варианте я могу послать с клиента сообщение серверу, и оно пропишется в консоль. Вопросов 2: 1. Как послать серверу сообщение, если клиент использует Прокси?(http) 2. Как сделать сокет, если между клиентом и сервером маршрутизатор? Мне не очень понятен принцип создания сокета на порте, т.е. как маршрутизатор определит кому отдать поток, если клиентов в его внутренней сети может быть много, и они все могут просить трафик по выбранному порту? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 11:22 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
wolfio1. Как послать серверу сообщение, если клиент использует Прокси?(http) Тот код, который приведёт выше это общение по TCP. HTTP прокси требуют протокола HTTP, который в OSI модели находится уровнем выше. wolfio2. Как сделать сокет, если между клиентом и сервером маршрутизатор? Одно и второе никак не связаны друг с другом. Возможно стоит перефразировать вопрос. Возможно вы хотели спросить про "соединение"? Маршрутизаторы работают так чтобы обеспечивать соединение прозрачно для клиента и сервера. wolfioМне не очень понятен принцип создания сокета на порте Перед тем как погрузится в принципы работы, я бы рекомендовал сначала с терминологией разобраться. http://stackoverflow.com/questions/152457/what-is-the-difference-between-a-port-and-a-socket wolfio, т.е. как маршрутизатор определит кому отдать поток, если клиентов в его внутренней сети может быть много, и они все могут просить трафик по выбранному порту? Это называется NAT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 11:30 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
Казалось бы при чем тут Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 11:30 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
wolfio, Если вы совсем только на стадии изучения, то по-моему на много перспективнее научится использовать HTTP/2, а не TCP. На практике TCP используют только из-за ограничений HTTP. С другой стороны понимание работы TCP иногда помогает в сложных ситуациях деплоймента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 11:32 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, авторОдно и второе никак не связаны друг с другом. Возможно стоит перефразировать вопрос. Возможно вы хотели спросить про "соединение"? Маршрутизаторы работают так чтобы обеспечивать соединение прозрачно для клиента и сервера. да, вы правы. Я именно соединение имел ввиду. авторПеред тем как погрузится в принципы работы, я бы рекомендовал сначала с терминологией разобраться. http://stackoverflow.com/questions/152457/what-is-the-difference-between-a-port-and-a-socket с терминологией предметной области я более менее знаком, но без привязки к конкретным знаниям о конкретном классе Java. Т.е. нет четкого понимания какой конструктор какое соединение создает. бегло прочел на хабре отличия HTTP от HTTP/2 и не очень понял, почему рекомендуете именно его? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 12:34 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
wolfioда, вы правы. Я именно соединение имел ввиду. Ну, вот есть одно устройство, есть маршрутизатор и есть другое. Маршрутизатор это особое устройство. Которое отправляет запросы одного устройства - другому. https://en.wikipedia.org/wiki/Routing_protocol wolfioс терминологией предметной области я более менее знаком Да-да. Ни слова про TCP, ни слова о "протоколах". Зато пёрлов всяких: "создания сокета на порте" "отдать поток" "просить трафик" Если интересно разобраться, то читаем OSI и изучаем общераспространенные протоколы: NAT, TCP, HTTP, UDP и многие другие, зависит от того что именно вы хотите понять. wolfioно без привязки к конкретным знаниям о конкретном классе Java. ServerSocket открывает серверный TCP порт и слушает его. Socket открывает клиентский порт для соединения с серверным. В ваших вопросах про Java нет ничего. wolfio Т.е. нет четкого понимания какой конструктор какое соединение создает. Конструкторы создают объекты. ServerSocket и Socket это классы для работы по протоколу TCP. wolfioбегло прочел на хабре отличия HTTP от HTTP/2 и не очень понял, почему рекомендуете именно его? Потому что на прикладном уровне TCP в Java нужен в очень редких задачах. Чаще всего его используют для реализации двустороннего соединения, которое в HTTP реализуется с подвыподвертом. Но у TCP есть свои ограничения. Одно из них и правда связано с маршрутизацией. Но с появлением HTTP/2 какая либо польза от использования TCP отсутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 13:21 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 13:32 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
Кратко ассинхронность, задержки меньше только вот я еще не понял у него есть понятие постоянного соединения. Вебсокеты вроде идут отдельной спецификацией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 13:35 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
BlazkowiczДа-да. Ни слова про TCP, ни слова о "протоколах".ну извините, теория была в институте =) форум же для того, чтобы общаться по теме, разве нет?) Вернулся к вопросу снова. Почитал разную теорию по вашим ключам, отличия http/2 от http. http/2 не нравится тем, что его еще нет в стандартных либах java. А до jdk9 еще дотерпеть надо. Если позволите, у меня остался глупый вопрос про NAT: Допустим, есть локальная сеть с выходом в интернет через роутер. На одной из машин сети запущен сервер, слушающий 9999 порт. Правильно ли я понимаю, что чтобы подключиться к вышеуказанному серверу, нужно сделать проброс порта на роутере, и "снаружи" обращаться по адресу маршрутизатора? и да, согласен, java в данном вопросе не при чем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 09:32 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
wolfioВернулся к вопросу снова. Почитал разную теорию по вашим ключам, отличия http/2 от http. http/2 не нравится тем, что его еще нет в стандартных либах java. А до jdk9 еще дотерпеть надо. В "стандартных либах" aka API много чего нет. Это вообще не повод. wolfioДопустим, есть локальная сеть с выходом в интернет через роутер. На одной из машин сети запущен сервер, слушающий 9999 порт. Правильно ли я понимаю, что чтобы подключиться к вышеуказанному серверу, нужно сделать проброс порта на роутере, и "снаружи" обращаться по адресу маршрутизатора? Да, это наиболее распространенный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 09:48 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВ "стандартных либах" aka API много чего нет. Это вообще не повод.Вы правы. Меня скорее смущает то, что вариаций работы http/2 для java несколько (я гуглил разные примеры) и они не похожи по реализации. Это несколько осложняет гуглинг, при решении разного рода проблем. У меня теперь концептуальный вопрос к вам, т.к. есть ощущение, что я курю не в том направлении. я хочу создать простое клиент-серверное приложение, где сервер мог бы принимать какие-то команды на выполнение в консоли, по принципу telnet'а. При этом, не хотелось бы, чтобы трафик был зашифрованым. Я гуглил про https(/2), и вижу сложность в том, чтобы получить сертификат. Как я понял из теории, я могу создать самозаверенный сертификат, но в этом случае wikiтакое использование HTTPS подвержено атаке man-in-the-middle. есть альтернативы этому решению? или же, как перекрыть возможность man-in-the-middle ? извините, что вопрос снова не совсем про java :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 10:18 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
и забыл - если создать самозаверенный сертификат, то нужно ли его иметь клиентской стороне? Вообще, можно ли создать шифрованое соединение без сертификатов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 10:22 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
wolfioЭто несколько осложняет гуглинг, при решении разного рода проблем. gRPC: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 10:29 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
wolfioи забыл - если создать самозаверенный сертификат, то нужно ли его иметь клиентской стороне? Вообще, можно ли создать шифрованое соединение без сертификатов? сертификат - одни из методов аутентификации (куки\токен\заголовки\...). Т.е. опять совсем в другую степь к сабжу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 11:35 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, wolfioПри этом, не хотелось бы, чтобы трафик был зашифрованым. госпаде, я не в себе сегодня похоже. конечно же я имел ввиду, что хотел бы чтобы он был шифрованным. BlazkowiczМожно просто использовать стандартные решения SSL и HTTPS не горю желанием открывать для себя мир криптографии, честно говоря. о каких стандартных решениях вы говорите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 11:39 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
wolfioо каких стандартных решениях вы так быстро видео посмотрели и всё переварили? Или вы журналист? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 12:00 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
видео посмотрел, очень понравилось настолько, что я кинулся сразу читать доку в оригинале, и зырить примеры http://www.grpc.io/docs/quickstart/java.html но ввиду своей неопытности, я даже не корректно запустить main из ..\src\test\java\io\grpc\examples\helloworld\HelloWorldClientTest.java Бласко, а ты сам экспериментировал с этим решением? смог клиент-сервер поднять тестовый? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 15:26 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
не смог* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 15:31 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
капец, как же злит когда 1 единственный релизер не может внятно изложить сэмплы и привести файлы в соответствии с их описанием. вот именно об этом я и говорил, говоря про авторЭто несколько осложняет гуглинг, при решении разного рода проблем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 17:42 |
|
||
|
Сервер-клиент с пробросом сокета через прокси
|
|||
|---|---|---|---|
|
#18+
Добрый день. Пытаюсь установить пример grpc клиент-сервера по инструкции, изложенной тут: http://www.grpc.io/docs/quickstart/java.html Разобрался со всеми командами консоли, но теперь проблема в следующем. При выполнении команды Код: plaintext получаю вот такую проблему: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. перегуглил кучу всяких переполненных стаков, удалось понять лишь то, что проблема в прокси (сижу на корпоративном прокси). испробовал кучу вариантов - кидал файл со свойствами, содержащими прокси, и прописывал их как параметры Код: plaintext Если же я меняю источник дистрибутива с http s на http, чтобы не парить мозги, и делаю Код: plaintext то загрузка какая-то начинается, но все ровно ошибка: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Почему происходит ресет я просто не понимаю. Может кто сталкивался? тема получилась не совсем по Java, но по проблеме скачки через gradlew и тем-то особо нет.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 16:59 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39406403&tid=2123034]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 204ms |
| total: | 403ms |

| 0 / 0 |
