首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Twisted >如何从window客户端读取比TCP帧长度更长的TCP消息,例如1380字节

Twisted >如何从window客户端读取比TCP帧长度更长的TCP消息,例如1380字节
EN

Stack Overflow用户
提问于 2011-07-22 16:38:43
回答 2查看 1.3K关注 0票数 3

我正在编写一个扭曲的服务器来读取高达64KB的TCP消息。我发现,linereciever类每1380字节调用一次mt datareciever,这就是Windows客户端的TCP帧大小。有没有办法在不遍历这1380字节块的情况下解决这个问题?

代码语言:javascript
复制
from twisted.internet.protocol import Protocol
from twisted.internet.protocol import Factory
from twisted.enterprise.adbapi import ConnectionPool
class CSVReceiver(Protocol):
    def dataReceived(self, line):
        print 'line RX :', len(line) , ' : ' , str(line)

dataReceived被调用并每1380字节打印一次,例如,当6KB的TCP消息被发送到我们的服务器时,打印4X。有什么方法可以避免这种情况,这样我们就可以在一个回调中处理整个字符串吗?

谢谢。

STAN

EN

回答 2

Stack Overflow用户

发布于 2011-07-22 16:45:16

你在python_forum上问了这个问题,我在那里回答了你。您希望使用LineReciever,并且希望将MAX_LENGTH设置为更高的数字。

票数 1
EN

Stack Overflow用户

发布于 2011-07-23 03:08:28

TCP发送数据流,而不是消息。中间网络可能会将您的流分成任意小的块进行传输。如果您可以控制发生这种情况的整个网络,则可以使用tune your Windows clients来设置不同的窗口大小。但是,您可能还必须专门配置本地路由器以支持Jumbo frames,因为即使是以太网,默认情况下也不支持大于1500个二进制八位数的帧。

基本上,除了最微不足道的例子之外,对于任何网络,你的问题的答案都是“不”。但是,你为什么要关心这个呢?LineReceiver存在的全部原因是向您提供整行数据,而不是您必须担心从TCP流中传出的单个任意大小的数据块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6787547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档