c ++ - Win32 navngivne rør og fjernklienter

Indlæg af Hanne Mølgaard Plasc

Problem



Kan jeg få adgang til et navngivet rør på computer A fra computer B, der er angivet computer En IP-adresse? Hvis ja, hvad skal jeg gøre for at få det til at ske?

Bedste reference


Ja, du kan kommunikere på tværs af netværket via navngivne rør. Du angiver rørnavnet som en UNC-sti:



  \computernamepipepipename



eller via IP



  \192.168.0.100pipepipename



Du kan gøre dette til enhver LAN-maskine eller til en fjernmaskine, der er tilsluttet dit LAN via VPN.


Du bruger alle de samme rør Win32 API funktioner som CreateFile. For at oprette røret bruger du CreateNamedPipe. [3] [4]


Før du kan bruge et fjernt rør, skal du have en gyldig forbindelse til den eksterne computer. For at gøre dette ville du bruge en API som WNetUseConnection. Eller hvis din computer er på samme domæne eller har den samme u/p, behøver du ikke at bruge WNetUseConnection overhovedet. [5]


Hvis du kører dit program som en tjeneste, kan du ikke få adgang til LAN-ressourcer med den lokale systemkonto. Tjenesten skal konfigureres med en anden konto.

Andre referencer 1


Navngivne rør kan bruges til at levere IPC mellem processer på forskellige computere på tværs af et netværk. Se MSDN. [6]


Hvis du har Windows XP SP2, Windows Server 2003 SP1 og nyere versioner, så glem ikke at aktivere den navngivne pipefiltrering. Se her. [7]

Andre referencer 2


Vær opmærksom på, rør under Windows er blodige forfærdelige. Der er mange afgørende detaljer, du skal få præcis ret, eller de fejler underligt, og dokumentationen er ikke i orden.


Hvis du kan, skal du bruge stikkontakter.