.Net에서 IPC 응용 프로그램을 개발하는 데 어려움을 겪고 있습니다. 이미 .Net을 사용하여 하나의 응용 프로그램을 작성했지만 내 배포 환경은 우분투이므로 .net 코어에서 .net 코드를 다시 작성합니다. 우분투에서 나는 [DllImport("kernel32.dll", SetLastError = true)]
을 쓸 수 없으므로 하나의 메커니즘 파이프를 발견했습니다. 기존 코드에서 파이프를 구현하는 데 어려움을 겪고 있습니다. 내가C#에서 명명 된 파이프를 구현하는 방법은 무엇입니까?
clientHandle =CreateNamedPipe(this.pipeName,DUPLEX | FILE_FLAG_OVERLAPPED,0,255,BUFFER_SIZE,BUFFER_SIZE,0,IntPtr.Zero);`
같은 방법 listenforclients이 사용하고 현재 내가
[DllImport("kernel32.dll", SetLastError = true)]
public static extern SafeFileHandle CreateNamedPipe(
String pipeName,
uint dwOpenMode,
uint dwPipeMode,
uint nMaxInstances,
uint nOutBufferSize,
uint nInBufferSize,
uint nDefaultTimeOut,
IntPtr lpSecurityAttributes);
으로 파이프를 만드는 오전 나는이 오류 pipeserver 결과이
NamedPipeServerStream pipeServer = new NamedPipeServerStream("_PipeName",PipeDirection.InOut,2,PipeTransmissionMode.Message,PipeOptions.None);
clientHandle = pipeServer(this.pipeName, DUPLEX | FILE_FLAG_OVERLAPPED, 0, 255, BUFFER_SIZE, BUFFER_SIZE, 0, IntPtr.Zero);
이 방법처럼 사용할 수 없습니다 시도했다. 누군가가 위의 올바른 방법을 서면으로 나를 도울 수 있습니까? 어떤 도움이라도 대단히 감사하겠습니다. 고맙습니다.
도움 주셔서 감사합니다. serializer가 컨텍스트에 존재하지 않는 것은 내가 얻는 첫 번째 오류입니다. 대신에 ... 내가 뭘 써야 할까? 또한 int 성공 = ConnectNamedPipe (clientHandle, IntPtr.Zero); 이 곳에서 나는 무엇을 써야 하나? –
@Niranjan Godbole : 답변에 더 많은 정보를 추가했습니다. 그것은 명명 된 파이프 통신을하는 방법이지만, 당신의 예를 들어 맞는지 정말로 말할 수는 없습니다. –
도움을 주셔서 감사합니다. 나는 다른 것을 들여다 보겠다. –