我有一个用Powershell编写的NamedPipe服务器和一个用Python编写的NamedPipe客户端。以下是我的NamedPipe客户端:
def namedpipeClient():
print "Inside NamedPipeClient"
time.sleep(2)
f = open(r'\\x.x.x.x\pipe\testpipe', 'r+b', 0)
i = 1
n = struct.unpack('I', f.read(4))[0] # Read str length
s = f.read(n) # Read str
f.seek(0) # Important!!!
f.close()
print 'Read:', s
if (s is None):
return True
else:
return False
我在一台机器上启动C#中的NamedPipeServer,而在另一台机器上,我将通过批处理文件运行NamedPipeClient。以下是我的批处理文件runTest.bat
c:
cd \Python27
.\python D:\LoadTesting\SikuliNPClient.py
因此,以这种方式运行可以毫无问题地执行所有操作。
现在,如果我尝试在同一台计算机上执行相同的批处理文件,但是从我通过psexec启动NamedPipeServer的计算机远程执行,psexec \\$remoteMachine -i 0 -d Powershell D:\LoadTesting\runTest.bat
批处理文件将被执行,但是{{1}它会抛出以下错误。
f = open(r'\\x.x.x.x\pipe\testpipe', 'r+b', 0)
我已登录两台计算机,只有具有管理员权限的相同用户。 请帮我弄清楚我的问题。
提前致谢!
答案 0 :(得分:0)
我遇到了这个问题,从模式中移除+
就像魅力一样。在您的情况下,而不是r+b
尝试rb
。
希望它有所帮助。