Ошибка

Ошибка #70010: не удаётся занять внутренний TCP-порт Node MyChat Server

 

Описание ошибки

Кроме основного порта чата, MyChat Server использует внутренний управляющий TCP-порт (по умолчанию 2015) для связи со встроенным WEB-сервером NodeJS. Этот порт слушается только локально, на адресе 127.0.0.1. Если он занят, сервер не стартует и показывает эту ошибку:

Cannot bind 2015 TCP port (port is busy)

 

Решение проблемы

Возможные варианты, почему так происходит. :

  • порт 2015 занят другой программой на этом же компьютере;
  • осталась зависшая копия mcserv.exe или его дочернего процесса Node;
  • порт попал в зарезервированный системой диапазон.


Этот порт нужен только самому серверу. Клиентам он не требуется, и в брандмауэре его открывать не нужно.


Как узнать, какая программа заняла порт?

Командная строка от имени администратора: Win+X, "Терминал Windows (Администратор). Выполните:

netstat -ano | findstr :2015


Реальный пример, на компьютере с Windows запущен wsl с докер-образом сервера MyChat:


TCP    127.0.0.1:2015         0.0.0.0:0              LISTENING       6140


По PID из последнего столбца найдите процесс в "Диспетчере задач":



  • Решение 1 — освободить порт

Закройте программу, занявшую порт 2015, либо завершите зависший процесс mcserv.exe (и его дочерний node), после чего запустите сервер снова.


  • Решение 2 — указать другой внутренний порт

Задайте свободный порт ключом командной строки, например:


mcserv.exe /NODEINTERNALPORT=2016


Важно: этот ключ действует только на текущий запуск и не сохраняется в настройках. Чтобы внутренний порт менялся постоянно, добавьте ключ в ярлык или команду запуска сервера (а если MyChat Server работает как служба Windows — в параметры запуска службы).


Ещё посмотреть

Порты, которые использует MyChat Server