2015-08-18 80 views
1

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

假设我的服务器独立于此客户端,并且它不断尝试连接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) 

回答

0

第一件事,切记不要把分号你的语句的结束。您不需要在文件结尾处退出(0)。

为了得到一个十六进制转储的“缓冲”,你可以说:print map(hex, buffer)

要发送的十六进制响应,最简单的方法是改变responseHex的定义是这样的:

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

然后它应该能够传递给client.send()函数。

相关问题