【问题标题】:dataReceived in client side doesn't work?客户端接收到的数据不起作用?
【发布时间】:2011-03-14 03:07:36
【问题描述】:

我已经实现了一个简单的服务器-客户端脚本,如下所示:

服务器:

class Server(Protocol):

  def connectionMade(self):
    while True:
      self.transport.write('a')

客户

class Client(Protocol):
  def dataReceived(self, data):
    print data

我所期望的是在客户端窗口上打印了一串无限的a,但实际上,什么都没有出现。当我用有限循环替换 Server 中的 while 循环时,它可以工作。所以看起来函数connectionMade需要在整个数据出现在客户端之前被终止?我错了吗?

【问题讨论】:

  • 我相当确信你是对的。

标签: client twisted


【解决方案1】:

你是对的。只要connectionMade 正在做事,还没有数据写入套接字transport.write(x) 不是“立即向套接字写入'x'”,而是“当套接字有一些空闲缓冲区空间时,向它写入'x'”。

这个例子,正如你所说的那样:

def connectionMade(self):
  while True:
    self.transport.write('a')

简单地分配一个充满'a'的无限大缓冲区,分配内存直到它崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多