【问题标题】:Python2.6 SCTP send and recieve hex values through sctp socketsPython2.6 SCTP通过sctp套接字发送和接收十六进制值
【发布时间】:2015-11-11 10:52:56
【问题描述】:

我正在尝试使用 Python2.6pysctp 包进行 sctp 编程。我能够从服务器捕获消息,但无法从 sctp 套接字中提取接收到的消息的十六进制转储。以及如何使用相同的套接字将我的 responseHex 作为响应发送到连接的服务器。

假设我的服务器独立于这个客户端,并且它不断尝试连接 192.168.10.13 地址。

代码:

#!/usr/bin/python

import sys
import socket
import pysctp
import pysctp.sctp as sctp

MAXRECVBUFFERSIZE = 2048
bindingIp  = "192.168.10.13"
socketPort = 112233;
socket     = sctp.sctpsocket_tcp(socket.AF_INET);

responseHex =[0xd0, 0x36, 0x02, 0x5a, 0x00, 0x51, 0x03, 0x00, 0x15, 0x00, 0x08, 0x00, 0x11];

socket.events.clear();
socket.bind((bindingIp, socketPort));
socket.listen(3);

client, addr = socket.accept();
buffer = client.recv(MAXRECVBUFFERSIZE);
print buffer   // This prints binary dump on the terminal
// And I want to send hexResponse variable through the same socket

socket.close();
exit(0)

【问题讨论】:

    标签: python sockets network-programming sctp


    【解决方案1】:

    首先,请记住不要在语句的末尾加上分号。您也不需要文件末尾的 exit(0)。

    要获得“缓冲区”的十六进制转储,您可以说:print map(hex, buffer)

    要发送十六进制响应,最简单的方法是将 responseHex 的定义更改为如下所示:

    responseHex = '\xd0\x36\x02\x5a\x00\x51\x03\x00\x15\x00\x08\x00\x11'

    那么它应该可以传递给client.send()函数。

    【讨论】:

      猜你喜欢
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2017-08-27
      • 1970-01-01
      相关资源
      最近更新 更多