2012-02-21 82 views
1

我有一個python程序應該連接到服務器並接收特殊格式的數據包,我可以測試和過濾掉。我可以連接到服務器,但我看不到我正在接收任何數據包 - 儘管我確信我是。我不知道如何調試。客戶端套接字不在Python代碼中接收

class client: 
    def __init__(self, host ='127.0.0.1', port=12345):  
     self.host = host  
     self.port = port  
     self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
     self.sock.connect((self.host, self.port))  

    def get_next_event(self):  
     pkt_size_data = self.sock.recv(4)  
     # on the above line I am not getting any response, the client just waits for something....  
     pkt_size = self.size_struct.unpack((pkt_size_data))[0] #I never get here  
     pkt_data= self.sock.recv(pkt_size)  
#( get_next_event is called from an infinite loop)  

我使用VS2010 - 斷點設置 - 考慮使用VS2010工具我的對象 - 是否有一些工具,我可以用它來調試,看看爲什麼我沒有收到來自的recv有何迴應?

任何想法,爲什麼我沒有得到任何迴應?

+0

「雖然我確定我是」 - 你怎麼確定?什麼是證據? – izhak 2012-02-21 21:01:34

+0

這個程序已被其他人使用(我已經改變了服務器發送的內容,理論上我確信發送和接收的數據包是相同的類型 - 但我確信服務器正在發送... 我試圖修改客戶端,但我想先理解它 - 我無法讓它工作。 服務器連續發送數據包... 即使不是,我也會就像能夠看到發生了什麼 Es – Thalia 2012-02-21 21:13:59

+0

試圖在無限循環之外調用一次,看看你得到了什麼,嘗試用小於4的bufsize調用它,比如說1.看看你得到了什麼。 ,現在看起來你並沒有收到任何東西 – izhak 2012-02-21 21:19:59

回答

0

嘗試嗅探器,看看發生了什麼。嘗試http://www.wireshark.org/

+0

我不知道如何比較有或無服務器運行的流量,以查看服務器是否真的發送任何東西。我已經瀏覽了服務器代碼,看起來它的確如此...... Wireshark向我展示了(作爲我沒有任何工具可以看到的唯一一件事),當服務器運行時,會有相當多的ICMP消息和SNMP獲取-request,get-next-request,get-response(內容沒有任何意義) – Thalia 2012-02-21 22:32:46

+0

你必須在服務器和客戶端通信的接口上捕獲數據包,運行服務器和客戶端,然後過濾流量。舉例來說,它將是127.0.0.1端口12345的TCP連接 – izhak 2012-02-21 23:00:23

相關問題