【问题标题】:Python Twisted frameowrk transport.write to a c# socket BeginReceive reading length based message framing valuePython Twisted 框架 transport.write 到 c# 套接字 BeginReceive 读取基于长度的消息帧值
【发布时间】:2016-06-09 06:19:21
【问题描述】:

我正在使用基于长度的消息框架和 python twisted 框架以及运行 BeginRecieve 异步读取的 C# 客户端,但我无法获取消息长度的值。

这是扭曲的python代码

self.transport.write(pack(self.structFormat, len(string)) + string)

这是 C# 代码:

int bytesRead = client.EndReceive(ar);

如果 (bytesRead > 0) { int msg_size = BitConverter.ToInt32(state.buffer, 0);

问题是当我通过 C# 端的 Bitconverter 抓取 len(string) 值时它不正确。 该值应为 15,但它的值为 251658240。

任何见解将不胜感激。

【问题讨论】:

  • 没有人可以回答这个问题。您需要提供更多信息。为什么你期望值是 15?你发送的这个字符串中有什么?也许您可以分享您的代码并添加更多详细信息?目前,您的问题本质上就像是在说:“我有一个字符串,我希望它是 ,但它却是 ,为什么会这样?”。怎么会有人回答这样的问题?

标签: c# python sockets twisted beginreceive


【解决方案1】:

抱歉,这个问题问得不好。不过我确实找到了解决方案。

int netmsg_size = BitConverter.ToInt32(state.buffer, 0);

int msg_size = IPAddress.NetworkToHostOrder(netmsg_size);

这会将网络整数转换回常规整数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多