我有一个扭曲的服务器脚本侦听unix套接字,它在客户端处于扭曲状态时接收数据但是如果我通过vanilla python套接字代码发送它则不起作用。
class SendProtocol(LineReceiver):
"""
This works
"""
def connectionMade(self):
print 'sending log'
self.sendLine(self.factory.logMessage)
if __name__ == '__main__':
address = FilePath('/tmp/test.sock')
startLogging(sys.stdout)
clientFactory = ClientFactory()
clientFactory.logMessage = 'Dfgas35||This is a message from server'
clientFactory.protocol = SendProtocol
port = reactor.connectUNIX(address.path, clientFactory)
reactor.run()
但这并不是(服务器无法获取任何数据)
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock_addr = '/tmp/test.sock'
try:
sock.connect(sock_addr)
except socket.error, msg:
print >> sys.stderr, msg
sys.exit(1)
sock.setblocking(0) # not needed though tried both ways
print 'connected %s' % sock.getpeername()
print 'End END to abort'
while True:
try:
line = raw_input('Enter mesg: ')
if line.strip() == 'END':
break
line += '\n'
print 'sending'
sock.sendall(line)
finally:
sock.close()
答案 0 :(得分:3)
您的两个客户端程序发送不同的数据。一个发送\r\n
- 终止的行。另一个发送\n
- 终止的行。也许你的服务器期待\r\n
- 终止的行,这就是为什么后一个例子看起来不起作用的原因。您的非Twisted示例也在它发送的第一行之后关闭套接字,但继续其读取发送循环。