Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 13:16   #1
JohnnyQ
 
Регистрация: 13.10.2008
Сообщений: 6
По умолчанию [Java] Сокеты и порты в Java

Добрый день!
Изучаю клиент-серверное взаимодействие в Java. Вот возник вопрос:
Как клиенту со своего заданного порта подключиться к заданному порту сервера. С портом сервера понятно - Socket(port). А как клиенту установить свой порт?

Решение:
http://www.programmersforum.ru/showp...12&postcount=6

Последний раз редактировалось Вадим Мошев; 16.05.2018 в 15:21.
JohnnyQ вне форума
Старый 09.12.2009, 21:06   #2
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Никак, хотя 100% не уверен. А вообще, по умолчанию используется локальный порт, идентичный удаленному, если же он занят, то используется любой другой локальный порт(на удаленный это не влияет).
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума
Старый 09.12.2009, 22:33   #3
JohnnyQ
 
Регистрация: 13.10.2008
Сообщений: 6
По умолчанию

Хм...а например, тогда как делают разные порты в ftp серверах при активном режиме, когда клиент присылает серверу на 21 порт свой ip и порт, а сервер должен уже с 20 порта отправить на полученный порт данные?
JohnnyQ вне форума
Старый 09.12.2009, 22:55   #4
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от JohnnyQ Посмотреть сообщение
Хм...а например, тогда как делают разные порты в ftp серверах при активном режиме, когда клиент присылает серверу на 21 порт свой ip и порт, а сервер должен уже с 20 порта отправить на полученный порт данные?
не обязательно с 20-го порта сервер будет отправлять.

Точное описание обработки file transfer протокола нет под рукой, быстрый поиск в гугле тоже не дал ничего корректного.
Но, предполагаю, что в активном режиме ftp клиент создает свой ServerSocket и прослушивает его, когда он отправляет серверу данные о своем ServerSocket'е, сервер сам подключается к клиенту, посредством ServerSocket'а клиента.

Socket объект не может ловить соединения извне, за исключенем того с которым он уже связан.(ServerSocket объект возвращает (а-ля accept() ) Socket объект, завязанный с Socket'ом клиента).
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.

Последний раз редактировалось alexinspir; 09.12.2009 в 22:57.
alexinspir вне форума
Старый 09.12.2009, 23:55   #5
JohnnyQ
 
Регистрация: 13.10.2008
Сообщений: 6
По умолчанию

Цитата:
Сообщение от alexinspir Посмотреть сообщение
не обязательно с 20-го порта сервер будет отправлять.

Точное описание обработки file transfer протокола нет под рукой, быстрый поиск в гугле тоже не дал ничего корректного.
Но, предполагаю, что в активном режиме ftp клиент создает свой ServerSocket и прослушивает его, когда он отправляет серверу данные о своем ServerSocket'е, сервер сам подключается к клиенту, посредством ServerSocket'а клиента.

Socket объект не может ловить соединения извне, за исключенем того с которым он уже связан.(ServerSocket объект возвращает (а-ля accept() ) Socket объект, завязанный с Socket'ом клиента).
да, не объязательно, но по стандарту должен отправлять данные(то есть файлы) именно по 20 порту.

Я смотрел стандарт активного ftp. Там вот так сказано:
Сервер создает свой ServerSocket на 21 порту (21 порт -порт команд) и прослушивает его, когда клиент подключается, то он команды передает на 21 порт сервера(то есть на клиенте создается простой Socket(port), который отправляет ip и порт, а после создается прослушивающий ServerSocket).
Когда клиенту нужно получить\залить файл на ftp, он с помощью команды PORT отправляет серверу свой ip и порт и сервер сам подключается к клиенту через 20 порт(то есть обычного создания Socket'а нам мало, нужно еще как то установить этот 20 порт)

Вот вопрос, как это сделать.....???

Последний раз редактировалось JohnnyQ; 10.12.2009 в 00:01.
JohnnyQ вне форума
Старый 10.12.2009, 11:52   #6
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Код:
ServerSocket ss = new ServerSocket(20);
Socket s = ss.accept();

вопрос решен, тема закрыта.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.

Последний раз редактировалось alexinspir; 10.12.2009 в 19:37.
alexinspir вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JAVA. Написать один метод на java для существующей реализации squadgazzz Фриланс 1 14.02.2017 14:04
Сокеты,порты,пакеты... asdasys C/C++ Сетевое программирование 2 03.03.2011 05:05
Помогите справиться с java.lang.OutOfMemoryError: Java heap space Levilaulada Помощь студентам 1 17.05.2009 10:59