私は.NetでIPCアプリケーションを開発するのに苦労しています。私はすでに.Netを使って一つのアプリケーションを書いていましたが、私の展開環境はUbuntuなので、.netコアで.netコードを書き直しています。 ubuntuで私は[DllImport("kernel32.dll", SetLastError = true)]
を書くことができないので、私は1つのメカニズムパイプを見つけた。私は既存のコードでパイプを実装するのに苦労しています。現在、私は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);
これを試してみました。誰かが上記の正しい方法を書いて私を助けることができますか?どんな助けでも大歓迎です。ありがとうございました。
ご協力いただきありがとうございます。シリアライザはコンテキスト内に存在しませんが、私が得ている最初のエラーです。次の代わりに...私は何を書くべきですか?また、私はint成功= ConnectNamedPipe(clientHandle、IntPtr.Zero);私はこの場所で何を書くべきですか? –
@Niranjan Godbole:答えにさらに情報を追加しました。これは名前付きパイプ通信を行う方法ですが、あなたの例に合っているかどうかは実際には言えません。 –
助けてくれてありがとう。私は別のものを調べる –