Этот ответ немного скучный, но я думаю, что он поможет.
Когда мы работаем с компьютерными сетями, мы действительно просто осуществляем межпроцессное взаимодействие.Допустим, на вашем компьютере было две программы, которые хотели общаться друг с другом.Вы можете использовать pipe для отправки данных из одной программы в другую.Когда вы говорите ls | grep pdf
, вы берете вывод ls
и подаете его в grep
.Таким образом, вы получаете однонаправленную связь между двумя отдельными программами ls
и grep
.
Когда вы делаете это, кто-то должен отслеживать идентификатор процесса (PID) каждого процесса.Этот PID является уникальным идентификатором для каждого процесса, и он помогает нам отслеживать, кто является процессами «источника» и «места назначения» для данных, которые мы хотим передать.
Итак, теперь давайте представим, что у вас есть данные с веб-сервера, чемВы хотите перенести в браузер.Ну, это тот же сценарий, что и выше - межпроцессное взаимодействие между двумя программами, «сервером» и «браузером».
За исключением этого времени эти две программы находятся на разных компьютерах.Механизм межпроцессного взаимодействия между двумя компьютерами называется «сокеты».
Так здорово.Вы берете некоторые данные, перетягиваете их по проводам, а другой компьютер получает их.За исключением того, что компьютер не знает, что делать с этими данными.Помните, мы сказали, что нам нужен PID, чтобы знать, какие процессы взаимодействуют?То же самое верно в сети.Когда ваш компьютер получает данные HTML, как он узнает, что отправляет их «firefox», а не «pidgin»?
Хорошо, когда вы передаете сетевые данные, вы указываете, что они отправляются на определенный «порт».Порт 80 обычно используется для Интернета, порт 25 для Telnet, порт 443 для HTTPS и т. Д.
И этот «порт» привязан к определенному идентификатору процесса на машине.Вот почему у нас есть порты.Вот почему мы используем bind()
.Чтобы сообщить отправителю, какой процесс должен получить наши данные.
Это должно объяснить ответы людей.Если вы отправитель, вам все равно, что является исходящим портом, поэтому обычно вы не используете bind()
для указания этого порта.Если вы являетесь получателем, все остальные должны знать, где вас искать.Таким образом, вы bind()
делаете свою программу на порт 80, а затем говорите всем, чтобы они обязательно передавали туда данные.
Чтобы ответить на ваш вопрос, да, вы, вероятно, хотите использовать bind () для своего сервера.Но клиентам не нужно использовать bind () - им просто нужно убедиться, что они передают данные на любой порт, который вы выбрали.