Эффекты от использования используемого порта TCP - PullRequest
0 голосов
/ 17 февраля 2020

Каковы побочные эффекты использования порта TCP, который уже используется? Я хочу использовать http://127.0.0.1:[port]/ для Discord Oauth2 и HttpListener для получения кода, отправленного с Discord. К сожалению, Discord не позволяет устанавливать URL-адреса перенаправления динамически (, как Google ). Таким образом, URL и порт должны быть зарегистрированы в настройках Disca Oauth2. У меня есть выбор, чтобы зарегистрировать некоторые URL-адреса с разными портами (например, 10 портов) и использовать URL-адрес с портом, который не используется. Но если все зарегистрированные порты используются и я использую один из портов для процесса Oauth2, каковы будут последствия? Почему порт следует использовать один раз за раз?

1 Ответ

0 голосов
/ 17 февраля 2020

Если вы зарегистрировали порт, он автоматически будет установлен как порт TCP. И протокол TCP имеет характеристику c, заключающуюся в том, что для отправки или получения пакетов с компьютера необходимо СОЗДАТЬ СОЕДИНЕНИЕ с этим компьютером, а затем он может отправлять или получать данные. И если получатель не получает его, он вернет ошибку connection refused и закроет сокет (отличается от UDP). Таким образом, порт можно использовать по одному, поскольку он создал СОЕДИНЕНИЕ и не может закрыть его для создания другого. Что касается But if all the registered ports are in use and I use one of the ports for my Oauth2 process what are the effects?, вы не можете это сделать или перестать делать то, что делает порт (обычно, когда вы подключаетесь к порту, который уже используется, выдается ошибка connection refused, потому что порт не прослушивает, не ждет соединения)

Посмотрите на это:

[A]                

                            the port are open (o) --->o[C] (waiting)

[B]
[A]                

                                               ------>o[C]
                                              /
[B]----------create_a_connection-------------/
[A]                

                                               --------[C]
                                              /
[B]---------the_established_connection-------/
[A]----------------------create_a_connection------------------------                
                                                                   /
                                               --------[C]<-------/
                                              /      (no result)
[B]---------the_established_connection-------/
...