2017-11-18 2 views
1

는 :파이썬 나는 UDP 소켓과 같이있는 경우 보낸 사람 소켓의 포트를 얻을하는 방법 (UDP)

import socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 

소켓 보낼 수있는 데이터 : 어떻게

sock.sendto("message", address) 

내가 알아 소켓의 포트 - 데이터를 보낼 때 사용하는 포트 address? 아마도 socket.getnameinfo()[1]가 작동 할 수 [Errno 10022] An invalid argument was supplied

답변

2

내가 파이썬 소켓 클래스에 너무 익숙하지 않은,하지만 난 여기에 https://docs.python.org/2/library/socket.html#socket.getnameinfo 를 읽은 내용에 따라 : 편집

: 나는 sock.getsockname()을 시도하지만이 오류가 발생합니다

.getsockname() 이후

은 (호스트, 포트) 2 튜플을 반환 당신이 수행하여 .getsockname()를 사용하기 전에 소켓의 바인드해야

sock.bind(('', 0)).

희망이 도움이됩니다.

+1

실제로'.getsockname'을 사용하여 소켓이 바인드 된 호스트, 터널 수를 얻습니다. –

+0

괜찮습니다. 그에 따라 개정되었습니다. 정보 주셔서 감사합니다! –

+0

'.getsockname()'은 에러를 발생시킵니다. 아마도 포트에 바인딩하지 않기 때문에 대신 포트 자체를 찾게 할 것이기 때문입니다. –

관련 문제