Win32 именованные каналы и удаленные клиенты - PullRequest
9 голосов
/ 05 апреля 2009

Можно ли получить доступ к именованному каналу на компьютере A с компьютера B с IP-адресом компьютера A? Если так, что мне нужно сделать, чтобы это произошло?

Ответы [ 3 ]

12 голосов
/ 05 апреля 2009

Да, вы можете общаться через сеть по именованным каналам. Вы указываете имя канала как путь UNC:

\\computername\pipe\pipename

или через IP

\\192.168.0.100\pipe\pipename

Вы можете сделать это для любой машины локальной сети или для любой удаленной машины, подключенной к вашей локальной сети через VPN.

Вы используете все те же функции канала Win32 API, что и CreateFile . Для создания трубы вы используете CreateNamedPipe .

Прежде чем вы сможете использовать удаленный канал, у вас должно быть действующее соединение с удаленным компьютером. Для этого вы должны использовать API, например WNetUseConnection . Или, если ваш компьютер находится в том же домене, или имеет тот же u / p, вам вообще не нужно использовать WNetUseConnection.

Если вы запускаете программу как службу, вы не можете получить доступ к ресурсам локальной сети с помощью локальной системной учетной записи. Служба должна быть настроена с другой учетной записью.

2 голосов
/ 05 апреля 2009

Именованные каналы могут использоваться для обеспечения IPC между процессами на разных компьютерах в сети. См. MSDN .

Если у вас Windows XP SP2, Windows Server 2003 SP1 и более поздние версии, не забудьте включить фильтрацию именованных каналов. См. здесь .

1 голос
/ 05 апреля 2009

Имейте в виду, трубы под Windows чертовски ужасны. Есть много важных деталей, которые вы должны точно понять, или они странно терпят неудачу, и документация не до конца.

Если можете, используйте розетки.

...