Я переписываю PHP-приложение в Node.js.Программа AC работает на ОС Linux, на которой также установлен PHP.
Короче говоря, программа C обрабатывает отправку данных из веб-интерфейса PHP на некоторое проприетарное оборудование.Он также обрабатывает создание файла сокета и выполняет другие задачи.
В устаревшем коде PHP работает, как ожидается, путем привязки к сокету и передает / получает данные, как и ожидалось.
Iнаписал сценарий для сервера и клиента Node.js, чтобы убедиться, что я могу создавать и подключаться к сокетам домена Unix с помощью встроенного модуля net.Это работает, как и ожидалось.
Однако, когда я пытаюсь подключить клиент сокета node.js к файлу сокета, созданному программой C, я вижу следующую ошибку:
{
Error: connect EPROTOTYPE /var/run/arcontroller-master.socket
at Object._errnoException (util.js:992:11)
at _exceptionWithHostPort (util.js:1014:20)
at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1186:14)
code: 'EPROTOTYPE',
errno: 'EPROTOTYPE',
syscall: 'connect',
address: '/var/run/arcontroller-master.socket'
}
Researchпоказал, что EPROTOTYPE: Protocol wrong type for socket
.В документации сетевого модуля не содержится информации о том, почему протокол неверен или как определить правильный протокол.
Можете ли вы определить другой протокол в файле node.js?Возможно, это недоразумение с моей стороны, но я подумал, что IPC - это просто IP-соединение через сокет домена unix.Я здесь ошибаюсь?
Дополнительная информация: Программа на C использует sys/socket
lib под капотом, краткое описание процесса создания сокета изложено ниже:
// Open up the socket we're listening on
struct sockaddr_un server_address;
server_address.sun_family = AF_UNIX;
strcpy(server_address.sun_path, socketFile);
sock = socket(AF_UNIX, SOCK_DGRAM, 0);
Дальнейшее чтение показываетSOCK_DGRAM is a UDP socket
- что мне здесь не хватает?