【问题标题】:Data not received by twisted socket connection扭曲的套接字连接未接收到数据
【发布时间】:2015-03-01 18:00:29
【问题描述】:

我有一个在 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()

【问题讨论】:

    标签: python sockets twisted


    【解决方案1】:

    您的两个客户端程序发送不同的数据。一个发送\r\n-终止的行。另一个发送\n-终止的行。也许您的服务器期待\r\n-terminated 行,这就是后一个示例似乎不起作用的原因。您的非 Twisted 示例还在它发送的第一行之后关闭套接字,但继续其读取发送循环。

    【讨论】:

    • 做到了。它是\r\n。我应该研究一下扭曲的代码本身。
    猜你喜欢
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多