- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个主要基于以下内容编写的 Namedpipeserver:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365588(v=vs.85).aspx
当我尝试使用此代码从 .NET 客户端连接到它时:
NamedPipeClientStream clientPipe = new NamedPipeClientStream(".",
"\\\\.\\pipe\\TTCUIHELPER_SEND_TTC_RECEIVE",PipeDirection.Out);
try
{
if (clientPipe != null)
{
clientPipe.Connect(5000);
if (clientPipe.IsConnected == true)
{
byte[] bytes = pm.GetMessageData();
clientPipe.Write(bytes, 0, bytes.Length);
clientPipe.Flush();
clientPipe.Dispose();
clientPipe.Close();
}
}
}
catch (Exception Ex)
{
System.Windows.MessageBox.Show(Ex.Message);
}
然后连接总是超时。奇怪的是,如果我尝试使用 CPP 编写测试客户端:
LPTSTR lpszPipename = TEXT("\\\\.\\pipe\\TTCUIHELPER_SEND_TTC_RECEIVE");
const TCHAR* lpvMessage=L"QQQQ";
HANDLE hPipe = CreateFile(
lpszPipename, // pipe name
GENERIC_READ | // read and write access
GENERIC_WRITE,
0, // no sharing
NULL, // default security attributes
OPEN_EXISTING, // opens existing pipe
0, // default attributes
NULL); // no template file
// Break if the pipe handle is valid.
DWORD cbWritten;
DWORD cbToWrite = (lstrlen(lpvMessage)+1)*sizeof(TCHAR);
_tprintf( TEXT("Sending %d byte message: \"%s\"\n"), cbToWrite, lpvMessage);
BOOL fSuccess = WriteFile(
hPipe, // pipe handle
lpvMessage, // message
cbToWrite, // message length
&cbWritten, // bytes written
NULL); // not overlapped
if ( ! fSuccess)
{
_tprintf( TEXT("WriteFile to pipe failed. GLE=%d\n"), GetLastError() );
return -1;
}
然后就可以完美运行了。它适用于 CPP 而不是 .NET,我可能做错了什么?
最佳答案
只需从您的管道名称中删除管道前缀,即仅使用名称本身:
"TTCUIHELPER_SEND_TTC_RECEIVE"
.NET NamedPipeClientStream
类在内部调用 Windows WriteFile API 时为您添加前缀。
关于.net - NamedpipeClientStream 无法连接,一直超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12759618/
我的代码在我的服务器中运行良好,但在azure应用程序服务中我收到此错误“操作已超时。”在行中在此处输入代码 pipeStream.Connect(TimeOut); 我的代码 public voi
在尝试读取之前,我需要检查 NamedPipeClientStream 以查看是否有字节可供读取。这样做的原因是,如果没有什么可读的,线程会在任何读取操作上停止,而我根本无法读取。即使没有字节可读,我
我构建了两个应用程序。一个是客户端,另一个是服务器。 它们通过命名管道进行通信。客户端创建 NamedPipeClientStream。一切正常,除非服务器关闭连接或服务器应用程序终止。 终止后,客户
我目前正在为 NamedPipeServerStream 编写一个小包装器/NamedPipeClientStream那是完全Event基于而不是使用 AsyncCallbacks . 我为几乎所有可
我想通过管道将数据从 C++ DLL 文件发送到 C# pip 服务器。服务器已编程,使用 C# 客户端可以很好地获取数据。 我的简单 C# 客户端代码: System.IO.Pipe
在 IPC 代码中,如果我通过调用 CreateFile 使用 Win32 API 从命名管道获取句柄,一切正常。如果我使用 NamedPipeClientStream 做同样的事情,它不想连接。 工
我有一个主要基于以下内容编写的 Namedpipeserver: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365588(v=
我对服务器/客户端架构有以下要求: 编写异步工作的服务器/客户端。 通信需要是双工的,即两端都可以读取和写入。 多个客户端可以在任何给定时间连接到服务器。 服务器/客户端应等待,直到它们可用并最终建立
使用 C 函数可以通过 _eof(pipeOut) 检查管道的输出端是否为空并跳过读取操作。 int endOfFile = _eof(myPipeIn); if(endOfFile != 0)
我在网上四处寻找,但找不到以下问题的答案。 我在客户端程序中有一个 C#/.NET NamedPipeClientStream 实例,工作线程正在调用 NamedPipeClientStream.Re
我正在尝试使用两个简单的 C# 表单解决方案在我的 Win-XP 工作站上实现双向命名管道通信。一种用于客户端,一种用于服务器。它们看起来几乎相同,并使用 NamedPipeServerStream
在将“写入”管道连接到正在运行的服务时,我遇到了与其他人相同的问题:UnauthorizedAccessException。我尝试了所有解决方案,但没有任何解决方案可以成功连接。 场景是在系统托盘中运
我想知道为什么 NamedPipes 存在于 .Net 中,如果我有一个应用程序想要创建某种代理来拦截其与目标服务器的连接,我将如何从中受益。 我想使用 NamedPipes 实现的是为 Minecr
我有连接到 NamedPipeServerStream 的 NamedPipeClientStream。他们交换了一些消息,然后 NamedPipeClientStream 关闭,而 NamedP
在我尝试关闭管道客户端后,我在输出控制台中看到以下错误: A first chance exception of type 'System.Net.Sockets.SocketException' o
.NET 中的 NamedPipeClientStream 类存在问题,您无法使用 PipeDirection.In 创建此类的实例,然后成功更改 ReadMode 到 PipeTransmissio
谁能告诉我为什么 NamedPipeClientStream.Connect() 会抛出 System.IO.FileNotFoundException 异常(无法找到指定的文件)?我认为 Conne
我是一名优秀的程序员,十分优秀!