2015-08-18 127 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()函數。

相關問題