gpt4 book ai didi

python - 在 dataReceived() 中扭曲接收数据

转载 作者:行者123 更新时间:2023-11-28 16:44:49 24 4
gpt4 key购买 nike

我正在尝试使用 Twisted 框架编写服务器并希望多次接收数据

class Echo(Protocol):
def connectionMade(self):
print " got connection from : " + str(self.transport.getPeer())

def dataReceived(self, data):

'''
get the client ip
'''
if(len(data)>40):
'''
initial setup message from the client
'''
client_details = str(self.transport.getPeer())#stores the client IP as a string
i = client_details.find('\'')#process the string to find the ip
client_details = client_details[i+1:]
j = client_details.find('\'')
client_ip = client_details[:j]


'''
Extract the port information from the obtained text
'''
data = data.split('@')
port1 = data[0]
port2 = data[1]
port3 = data[2]

if int(data) == 1:
method1(client_ip,port1)

if int(data) == 2:
method2(client_ip,port2)

我的问题:method1 和 method2 仅当它从客户端接收到包含适当整数数据的消息时才会被调用。有没有一种方法可以让我在 dataReceived() 方法中等待客户端接收数据,或者我应该在 dataReceived() 方法本身中按顺序执行?

最佳答案

dataReceived 方法在接收到一些数据时被调用。为了等待接收到更多的数据,您只需从 dataReceived 返回,以便再次调用它。

此外,TCP 不是基于消息的,而是基于流的。您的 dataReceived 方法不能指望总是收到一条完整的消息,因此您的示例代码不正确。 See this frequently asked question在 Twisted Matrix Labs 网站上了解更多信息。

关于python - 在 dataReceived() 中扭曲接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com