Клиент-серверное приложение Java - PullRequest
3 голосов
/ 02 января 2011

Я узнал, что серверное приложение создает ServerSocket на определенном порту,

ServerSocket ServerSock=new ServerSocket(9000);

и клиент устанавливает сокет-соединение с сервером приложения,

Socket sock=new Socket("127.0.0.1","9000");

Так что клиент знает IP-адрес и порт сервера, я запутался, как и когда сервер получает информацию о клиенте. Пожалуйста, помогите.

Спасибо заранее !!!

Ответы [ 3 ]

6 голосов
/ 02 января 2011

Сервер «прослушивает» входящие соединения от клиентов. Просто представьте, что номер порта является номером двери, а сервер ждет у этой двери гостей.

Таким образом, когда серверное приложение выполняет serverSock.accept (), оно фактически блокирует и ожидает прибытия клиентов.

Как только клиент попытается подключиться, метод accept () разблокирует сам себя и вернет другой экземпляр Socket, на этот раз представляющий клиента.

Через этот новый экземпляр Socket вы можете узнать, кто является клиентом. Пример кода приложения вашего сервера:

ServerSocket serverSock=new ServerSocket(9000);

Socket clientSock = serverSock.accept(); //this will wait for a client

System.out.println("Yay we have a guest! He's coming from " + clientSock.getInetAddress());
2 голосов
/ 02 января 2011

Сервер принимает клиента с ServerSock.accept(). Здесь - учебник.

0 голосов
/ 02 января 2011

Ну, клиент знает IP и порт сервера для подключения.
Затем клиент пытается соединиться с сервером.
Для этого клиентскому процессу будет назначен временный порт, поэтому, если запросное соединение будет принято уровнем TCP сервера (сервер прослушивает и пытается принять соединения), клиентский сокет будет доступен для сервера с IP и порт клиента.
Теперь сервер теперь знает, как связаться с клиентом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...