如何在Android中创建命名管道(mkfifo)?
我在在Android中创建名称管道时遇到麻烦,下面的示例说明了我的困境: res = mkfifo("/sdcard/fifo9000", S_IRWXO); if (res != 0) { LOG("Error while creating a pipe (return:%d, errno:%d)", res, errno); } 代码总是打印: Error while creating a pipe (return:-1, errno:1) 我无法确切地弄清楚为什么会失败.该应用程序具有android.permission.write_external_storage权限.我可以在同一位置中创建具有完全相同的普通文件,但是管道创建失败.有关管道应从多个应用程序访问. 我怀疑没有人可以在/sdcard中创建管道.它在哪里最好的位置? 我应该设置什么模式桅杆(第二个参数)? 应用程序需要额外的权限吗? 解决方案 roosmaa的答案是正确的-
2 2024-02-17
编程技术问答社区
SQL服务器 "网络路径未找到 "在不同环境下随机和不经常出现
类似(如果不是同一问题)网络路径未发现,没有随机出现. ,但是我有复制该问题的代码,所以我想再次询问,因为它似乎是一个独立于硬件的真实问题,并且可以复制. 这是错误: 提供商:命名Pipes提供商,错误:40-无法打开与SQL Server的连接)---> System.com.ponentmodel.win32 Exception(0x80004005):找不到网络路径 在System.data.data.providerbase.dbConnectionpool.trygetConnection(dbConnection oningObject,uint32 waitgormultiplultipleObjectStimeout,boolean允许CREATEE,BOOLEAN ALLICHENECHECKCONNECTION,BOOLEAN ONLENECHECKCONNECTION,dbConnectionOptions useroptions useroptions
2 2024-01-19
编程技术问答社区
在Windows上,谁在Everyone和Authenticated Users组中?
我的应用程序使用命名管进行IPC.我应该在其中放置什么访问控件,以提供广泛的本地访问? 该管道由.NET 2.0远程协议创建,并且它已经为"网络"组具有一个ACL来拒绝所有访问权限,因此我认为只有本地用户才能访问它.在我的远程配置文件中,我需要选择一个可以访问此管道的"授权组". 我希望在本地计算机上运行的任何过程以访问我的命名管道. 我似乎需要在"每个人"组或"身份验证的用户"组之间进行选择.鉴于仅本地访问,在"身份验证用户"组中的"每个人"组下可能会运行哪些过程? 我对Windows XP及以上的答案感兴趣. 解决方案 "每个人"是"经过身份验证的用户"和"访客"的集体组.请注意,对于Win 2000和更早的Win,它也包括"匿名",没有进行任何检查 "已验证的用户"是已登录AD并具有登录令牌的用户. 我的文本是Windows Server 2003的释义," 安全标识符". 编辑链接的"网络": 包括所有登录的用户 通过网络连
2 2024-01-09
编程技术问答社区
如何在.NET核心中设置NamedPipeServerStream的PipeSecurity
我正在从.NET框架4.6.1到.NET标准2.0移植一个库.在框架中,NamedPipeServerStream构造函数可以采用PipeSecurity参数,但这不是核心中的选项.您如何在核心中设置NamedPipeServerStream的安全性? 解决方案 net 6.0已引入 . 您可以使用创建使用管道安全创建流的方法... using System.IO.Pipes; using System.Security.AccessControl; using System.Security.Principal; if (!System.OperatingSystem.IsWindows()) throw new PlatformNotSupportedException("Windows only"); SecurityIdentifier securityIdentifier = new SecurityIdentifier( WellKno
8 2024-01-08
编程技术问答社区
System.IO.Exception: 管道破裂
我有两个.NET应用程序,可以通过命名管道互相交谈.第一次一切都很好,但是在发送第一条消息后,服务器将再次聆听,WaitForConnection()方法抛出了System.IO.Exception System.IO.Exception带有消息管道损坏. 为什么我在这里得到这个例外?这是我第一次使用管道,但是过去使用插座对我有类似的模式. 代码ahoy! 服务器: using System.IO.Pipes; static void main() { var pipe = new NamedPipeServerStream("pipename", PipeDirection.In); while (true) { pipe.Listen(); string str = new StreamReader(pipe).ReadToEnd(); Console.Write("{0}", str);
0 2024-01-07
编程技术问答社区
C# 3.5-跨网络连接命名管道
通过网络在C#中设置命名管的正确方法是什么? 目前,我有两台机器,"客户端"和"服务器". 服务器以以下方式设置管道: NamedPipeServerStream pipeServer = new NamedPipeServerStream( "pipe", PipeDirection.InOut, 10, PipeTransmissionMode.Byte, PipeOptions.None) pipeServer.WaitForConnection(); //... Read some data from the pipe 客户端以以下方式设置其连接: NamedPipeClientStream pipeClient = new NamedPipeClientStream( "server", "pipe", PipeDirection.InOut); pipeClient.Connect()
8 2024-01-07
编程技术问答社区
如果设置了PipeSecurity,当创建第二个实例时,命名的管道服务器会抛出UnauthorizedAccessException。
我正在尝试编写(提高特权)服务,该服务将与非特权Winforms应用程序进行交谈.我能够有两个控制台应用程序(一个抬高一个不是)来回交谈,但我在做服务和winforms应用程序时遇到问题. 管道的第一个实例完美地工作.但是,在我的客户端连接后,我尝试创建一个新实例,因此如果第二个客户端连接,它将准备就绪,但是命名PipeServerStream的构造函数会引发异常 System.UnauthorizedAccessException was unhandled Message=Access to the path is denied. Source=System.Core StackTrace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Pipes.NamedPipeServerStream.Create(Str
2 2024-01-07
编程技术问答社区
有什么好的方法可以关闭被封锁在NamedPipeServer#WaitForConnection上的线程?
我启动了我的应用程序,该应用程序产生了许多线程,每个线程都会创建一个名为PipeServer(.NET 3.5添加了命名Pipe IPC的托管类型),并等待客户端连接(块).该代码按预期发挥作用. private void StartNamedPipeServer() { using (NamedPipeServerStream pipeStream = new NamedPipeServerStream(m_sPipeName, PipeDirection.InOut, m_iMaxInstancesToCreate, PipeTransmissionMode.Message, PipeOptions.None)) { m_pipeServers.Add(pipeStream); while (!m_bShutdownRequested) { pipeStream.Wa
2 2024-01-07
编程技术问答社区
通过Named Pipe发送的视频帧非常慢
我有一个应用程序,可以处理其他图形,并以窗口形式显示输出.我必须将视频处理分为背景过程/服务,并将视频/帧显示到前端UI.这些图像在准备就绪后立即通过命名管发送. 一切都起作用,但是问题是通过命名管发送视频非常慢.这是相关代码: 背景过程: if (serverPipe.isConnected()) { ImageConverter converter = new ImageConverter(); erverPipe.WriteBytes((byte[])converter.ConvertTo(_currentImage.ToBitmap(), typeof(byte[]))); serverPipe.Flush(); } 前景UI应用程序: clientPipe.DataReceived += (sndr, args) => { form.updatePictureBox(args.Data); }; 命名的管道代码来自此文章
2 2024-01-07
编程技术问答社区
WCF命名的管道IO异常-该管道已被结束。(109, 0x6d)
我们有一个WCF服务,该服务通过net.pipes协议在启动时调用了其他几种服务.呼叫返回字符串列表, no Enum或复杂对象. 有时,我们会收到以下例外. System.ServiceModel.CommunicationException: There was an error reading from the pipe: The pipe has been ended. (109, 0x6d). ---> System.IO.IOException: The read operation failed, see inner exception. ---> System.ServiceModel.CommunicationException: There was an error reading from the pipe: The pipe has been ended. (109, 0x6d). ---> System.IO.PipeException: T
34 2024-01-07
编程技术问答社区
WCF HTTP和NamedPipe服务
我正在创建WCF服务,目前,该服务使用BasichttpBinding公开了许多合同.但是,我现在想在同一台计算机上本地使用该服务,并且在性能方面似乎更合适.因此,我想使用命名管和http公开服务. 目前我正在使用以下配置进行此操作:
2 2024-01-07
编程技术问答社区
命名的管子挂在上读
我有一个命名的管服务器.客户端发送消息,这似乎还可以,但是服务器只是挂在线上var stringData = textReader.ReadToEnd();. . var namedPipeServerStream = new NamedPipeServerStream(_pipeName, PipeDirection.In, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous); namedPipeServerStream.WaitForConnection(); using (var textReader = new StreamReader(namedPipeServerStream)) { var stringData
4 2024-01-07
编程技术问答社区
在Powershell中使用回调的异步命名管道
我正在尝试使用.NET使用PowerShell中的回调使用.NET命名为PipeServerStream. 我目前正在使用以下代码: 服务器端: $myCallback = [AsyncCallback]{ "Connected" } $pipe = New-Object System.IO.Pipes.NamedPipeServerStream("alert", [System.IO.Pipes.PipeDirection]::InOut, 1, [System.IO.Pipes.PipeTransmissionMode]::Message, [System.IO.Pipes.PipeOptions]::Asynchronous) $pipe.BeginWaitForConnection($myCallback, "alertCallback") 客户端: $pipe = new-object System.IO.Pipes.NamedPipeClie
2 2024-01-06
编程技术问答社区
为什么从管道中读出的数据会阻塞进程?
我有两个进程(两个.NET Framework应用程序),我正在尝试使用Named Pipes进行通信 客户端连接到管道,但是当它尝试ReadAsync服务器发送的消息时,它开始无关紧要,即使服务器已经发送了一条消息! 令我惊讶的是,如果我关闭Server应用Client最后继续访问下一行代码(ReadAsync行之后),读取 0 字节. 在有效载荷之后,我在服务器上必须使用什么?我需要冲洗还是什么? 服务器 static async Task Main(string[] args) { var server = new NamedPipeServerStream( "somePipe", PipeDirection.InOut, 2, PipeTransmissionMode.Message );
8 2024-01-06
编程技术问答社区
如何在Windows服务中冒名顶替时调用net.pipe(命名管道)WCF服务
我正在遇到一个问题,可以通过net.pipe呼叫WCF服务. 背景 服务从队列中读取并创建儿童应用程序域,每个域都根据从队列中提取的项目运行特定的模块.我们将Windows服务称为" Jobqueagent",每个模块为" Job".我将使用以下这些术语.可以将作业配置为作为指定用户运行.我们在作业的应用程序域中使用模仿来实现这一目标. 以下是服务中逻辑和凭据的流程: JobQueueAgent(Windows Service - 主要用户)>>创建作业域>> 作业域(应用域)>>模仿子用户>> 在线程上进行模拟>>在线程上运行工作 作业(模块 - 子用户)>>作业逻辑 "主要用户"和" sub用户"都是具有"登录为服务"的权利. 该服务在运行Windows Server 2012 R2的虚拟服务器上运行. 以下是我正在使用的C#模拟代码: namespace JobQueue.WindowsServices { using System
0 2024-01-06
编程技术问答社区
NetNamedPipe:通信空闲时的响应时间不同
我有两个WCF应用程序在命名管道上通信单向.一切都很好,除了一件事: 通常,请求/响应周期需要零(边际)时间.但是,如果有时间跨度为半分钟而没有任何通信,请求/响应将增加到〜300-500ms. 我环顾了网,我想到了使用心跳/ping机制使通信频道忙碌.使用反复试验,我发现每10秒钟执行请求时,响应时间保持较低.从大约15s间隔开始,"打ic"响应时间开始出现. 现在,我想知道这种现象来自哪里.我尝试将可疑的超时设置在两侧> 1分钟以上,但这无济于事. 任何人都可以解释那里发生了什么吗? 解决方案 Check out Wenlong Dong's blog post, 为什么wcf在闲置15秒后会变得慢? 该帖子还包括一个解决方法,直到修复为止. 其他解决方案 是否有可能将空转过程分为磁盘?如果您将流程保持在两端很忙,但不要让连接很忙,它仍然会发生吗? 可能不是这样,但值得一试.
0 2024-01-06
编程技术问答社区
跨越网络的命名管道给出了 "用户名或密码不正确"
给任何可以提供帮助的人!我一直在尝试拥有一个C#应用程序,该应用程序会在两个PC之间的网络上进行命名的管道工作.这些应用程序在同一域内的同一PC和PC上完美工作.但是,当一台PC在"工作组"中并且一台PC在一个域上时,我有问题.服务器上的安全性不是问题,我可以使其尽可能开放. 背景信息: 客户端 - PC在域中,可以通过C $ Admin共享连接到服务器 服务器 - 不在域中,作为控制台运行的应用程序,禁用防火墙,启用"允许入站文件和打印机共享"端口445. 看来我无法访问远程服务器上的任何命名管.代码: // Client Connection PipeStream pipe = new NamedPipeClientStream("192.168.1.102", "TEMP_PIPE", PipeDirection.InOut, PipeOptions.Asynchronous, TokenImpersonationLevel.None); ((NamedP
2 2024-01-06
编程技术问答社区
如何使命名管道在C++和.NET之间工作?
我刚刚很难在C ++和.NET之间使用名称的管道工作. 我没有问题创建在2个C ++应用程序之间或2个.NET应用之间工作的指定管道. 解决方案 我没有这种通信的问题,我在某些项目中使用了这种情况. c ++方面: LPTSTR lpszPipename = TEXT("\\\\.\\pipe\\pipename"); CHAR chReadBuf[1024]; DWORD cbRead; BOOL fResult; fResult = CallNamedPipe( lpszPipename, // pipe name _Message, // message to server strlen(_Message), // message length chReadBuf, // buffer to receive reply sizeo
6 2024-01-06
编程技术问答社区
删除命名的管道。
我使用此代码列出了我的命名管: private IEnumerable GetNamedPipesList() { string[] listOfAllPipes = Directory.GetFiles(@"\\.\pipe\"); return listOfAllPipes.Where(pipe => pipe.Contains("FST")); } 它可以正常工作.我可以显示它们: private void Scan_Click(object sender, EventArgs e) { IEnumerable fsbPipes = GetNamedPipesList(); tbxOutput.Text = string.Empty; foreach (string fsbPipe in fsbPipes)
2 2024-01-05
编程技术问答社区
如何在iis中托管启用了net named pipe binding的WCF应用程序?
我在WCF服务中有以下配置 任何人都可以建议我使用netnamedPipe绑定在IIS中托管此WCF服务吗? 解决方案 要使命名管道在IIS上工作,您必须在IIS上启用Windows Process Activation Service(WAS)并配置您使用的网站以允许命名管道. 有关详细信息,请参阅: .aspx 就像Cyber​​max在评论中所说的那样,最好先与基本的HTTP绑定一起使用. 如果您认为自己认为已经正确设置了所有内容并且仍然不起作用的地步,请检查防火墙设置
4 2024-01-05
编程技术问答社区