Эквивалентные функции Java для функций C в сетевом программировании - PullRequest
0 голосов
/ 05 ноября 2018

Я делаю сравнение между некоторыми функциями C, используемыми в сетевом программировании, и их Java-аналогом. Большинство из них я могу найти в документах о Socket, ServerSocket, InetAddress классах.

Однако я не могу найти listen(), recv(), send() и getaddrinfo() в Java. Насколько я понимаю, я вижу, что большинству программ клиент-сервер на Java они не требуются, поскольку вы можете просто написать байт / сообщение и сбросить их непосредственно на другой конец, используя flush() или PrintWriter().

Правильно ли я понимаю, и есть ли какие-либо эквивалентные функции этим трем?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Прослушивание и прием могут быть реализованы несколькими различными способами. Java является объектно-ориентированной, поэтому логика обычно представлена ​​конкретным типом объекта.

Взгляните на Учебник по чтению и записи в сокет , в котором приведены несколько примеров работы с сокетами, например, используя InputStream и OutputStream для взаимодействия с Socket:

try (
  Socket echoSocket = new Socket(hostName, portNumber);
  PrintWriter out =
      new PrintWriter(echoSocket.getOutputStream(), true);
  BufferedReader in =
      new BufferedReader(
          new InputStreamReader(echoSocket.getInputStream()));
  BufferedReader stdIn =
      new BufferedReader(
          new InputStreamReader(System.in))
)
0 голосов
/ 05 ноября 2018

Когда вы создаете ServerSocket, базовая функция listen вызывается при привязке к порту либо через конструктор, либо через метод bind.

Функции recv и send вызываются путем чтения и записи в InputStream и OutputStream соответственно, которые присоединены к экземпляру Socket и возвращены методами getInputStream и getOutputStream.

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