我正在尝试使用Python2.6和pysctp包进行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)
首先,记住不要在语句的末尾加上分号。您也不需要在文件末尾使用exit(0)。
要获取"buffer"的十六进制转储,您可以输入:print map(hex, buffer)
发送十六进制响应,最简单的方法是修改responseHex的定义,使其看起来像这样:
responseHex = 'xd0x36x02x5ax00x51x03x00x15x00x08x00x11'
那么它应该能够被传递给client.send()函数