2012-02-21 4 views
1

서버에 연결하고 특수하게 포맷 된 패킷을 수신하여 테스트하고 필터링 할 수있는 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

+0

이 프로그램은 다른 사람들에 의해 사용되었습니다 (서버가 전송하는 것을 변경했습니다. 이론적으로는 보내고받는 패킷이 동일한 유형이라는 것을 확신합니다.) 그러나 서버가 전송 중임을 확신합니다. 클라이언트를 수정하려고하는데 먼저 이해하려고 노력 중입니다. 작동하지 않습니다. 서버가 패킷을 계속 보내고 있습니다 ... 그렇지 않더라도 어떤 일이 벌어지는지를 볼 수 있기를 원합니다. Es – Thalia

+0

무한 루프 바깥에서 한 번만 전화하려고합니다. 얻은 것을보십시오. bufsize가 4보다 작 으면 1이라고 말하십시오. 지금은 당신이 실제로 아무 것도받지 못하는 것처럼 보입니다. – izhak

답변

0

스니퍼를보고 무슨 일이 일어나는지보십시오. 시도해보십시오 http://www.wireshark.org/

+0

나는 서버가 실제로 아무것도 보내고 있는지 확인하기 위해 실행중인 서버없이 트래픽을 비교하는 방법을 모른다. 나는 서버 코드를 밟았는데 ... Wireshark는 서버가 실행 중일 때 ICMP 메시지와 SNMP가 꽤 많이 있다는 것을 보여줍니다 (도구 없이도 볼 수있는 유일한 것입니다). -request, get-next-request, get-response (내용이 이해되지 않음) – Thalia

+0

서버와 클라이언트가 통신하는 인터페이스에서 패킷을 캡처하고 서버와 클라이언트를 실행 한 다음 트래픽을 필터링해야합니다 . 예를 들어 127.0.0.1 포트 12345에 대한 TCP 연결이됩니다. – izhak

관련 문제