2014-01-17 4 views
1

python2.X (Linux (++) 및 Windows (+)) 주소 및 수신 대기하기 위해 Python 클라이언트를 만들려고합니다. 메시지는 특정 주소 및 특정 포트의 응용 프로그램에서 보내지 만 작성 방법을 모르겠습니다. 나는 그것이 기능적이며 UDP 프로토 콜을 사용하고 있음을 확신한다.PYTHON - 서버를 모른 채 UDP 수신

그래서, 메시지 수신이 코드를 작성했습니다 :이 시점에서

import socket 
#---socket creation 
connexion = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 

#---Bind 
try: 
    connexion.bind(('', 10015)) 
except socket.error: 
    print "connexion failed" 
    connexion.close() 
    sys.exit() 

#---testing 
while 1: 
    data, addr = connexion.recvfrom(1024) 
    print "messages : ", data 

를, 거기 실행 오류 없지만, 코드는이 선에서 정지 :

data, addr = connexion.recvfrom(1024) 

아무 일도 일어나지 않는다. 나는 연결되어 있지 않고 메시지를받을 수 없다고 생각하지만 왜 그런지 모르겠다. 주소를 '192.168.X.X'로 변경하려고했으나 동일합니다.

누구든지 나를 도울 수 있다면, 좋을 것입니다. 나는 왜 python이 ... 매우 편안하지 않다. 추신 : 죄송합니다. 내 영어.

+0

그 줄에서 멈추지 않습니다. 크기가 1024 인 버퍼가 채워지기를 기다리고 있습니다. 버퍼가 가득 차면 리턴됩니다. 보낸 사람이 보내고 버퍼 크기를 줄이려고 시도하십시오. – Akilesh

+0

당신이 틀렸다고 생각합니다. recvfrom은 1024 바이트가 아니라 패킷을 기다립니다. 패킷이 작 으면 패킷의 데이터와 함께 반환됩니다. –

+0

python 설명서에서 Buff Size (1024)는 한 번에받을 수있는 데이터의 최대량이므로 Steffen Ullrich와 같은 생각이었습니다. – tutur29

답변

0

코드가 모두 훌륭하고 괜찮습니다. ,

import socket 
connexion = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
connexion.sendto("sending data via udp", ("localhost", 10015)) 

메시지가이 조각으로 보낼 경우

가 표시되지 않습니다 방화벽을 확인 : 당신은 다음과 같은 파이썬 코드 조각을 사용하여 작동하는지 확인할 수 있습니다. 다른 응용 프로그램이 실제로 생성되는지 (또는 무엇을) 조사하려면 tcpdump 또는 wireshark를 사용해보십시오.

+0

괜찮은지 확인하기 위해이 다른 방법을 시도하지 않았습니다. 좋은 생각이야. 가능한 빨리 시도하겠습니다. – tutur29

1

내 문제가 발견되었습니다. . I은 000 15은 192.168하고, 문서합니다 (IP 주소를 변경; I는 정상 ADRESS (192.168.8.15)과 같은 제로 whithout 시도 I는 I가 변경 내 메시지를

접수 내 코드의 구조도 (가 영향을 알고하지 않습니다) 내가 넣어 내 "시도 : [...]를 제외하고 [...]"라인에

대신 라인의
data, addr = connexion.recvfrom(1024) 

:

connexion.bind(('', 10015)) 

감사합니다;)

관련 문제