PyOSC, питон. Зачем для получения oscserver IP-адрес?
В PyOSC вам необходим IP-адрес и порт, чтобы OSCServer мог получать информацию. И это не совсем имеет смысл для меня. Как и на Максе, вам нужно только объявить порт. Разве для получения вам всегда нужен только localhost как ip?
У меня есть приложение для Android, которое отправляет сообщение OSC в мою программу на моем компьютере. И проблема у меня сейчас на Python, мне всегда нужно вводить правильный IP-адрес моего компьютера, чтобы он работал. Это даже не сработает, если я изменю его на "localhost".
Насколько я понимаю, для получения udp вам нужно всего лишь открыть порт, а IP не имеет значения, потому что он всегда будет localhost.
class Rating_receiver:
def __init__(self, ip = '192.168.0.3', port = 50010, num_emotion = 9, num_degree = 4):
self.receive_address = ip, port
self.num_emotion = num_emotion
self.num_degree = num_degree
self.choice = targetlist[0]
self.degree = degreelist[0]
def spawn(self):
print"Server Created."
self.receiveServer = OSC.OSCServer(self.receive_address)
self.receiveServer.addDefaultHandlers()
def start(self):
# Start OSCServer
print "\nStarting OSCServer."
self.emorating_oscServer = threading.Thread(target = self.receiveServer.serve_forever)
self.emorating_oscServer.start()
print "\nOSCServer established.
rating_receiver = Rating_receiver(ip = "localhost", port = 7110, num_emotion = 9, num_degree = 4)
rating_receiver.spawn()
Таким образом, он не будет работать, если я установлю ip в значение "localhost" (сервер может быть собран, но не сможет получать никаких сообщений), будет работать только при вводе действительного IP-адреса, например, "192.168.0.3". Спасибо
2 ответа
Вы действительно должны использовать "localhost".
Определите нужный порт, а затем отправьте сообщения с другого компьютера на тот, на котором выполняется этот код на его ip. Я предполагаю, что вы уже позаботились о таких вещах, как открытие порта, и вы знаете о разнице в объеме доступа от внешней сети к вашему маршрутизатору, но я перечислю это, чтобы прояснить это:
- Если вы отправляете сообщения из одной сети, вам не нужно беспокоиться о портах. Просто найдите локальный IP для вашего компьютера. например, 192.168.X.XXX
- Если вы отправляете сообщения извне, откройте публичный порт 50010 и перенаправьте его на свой внутренний ip 192.168.X.XXX на тот же порт 50010.
Вы должны определить функцию "default_handler" для обработки полученных сообщений, не уверен, что вы определили это и забыли показать его здесь:
def default_handler(addr, tags, stuff, source):
print "SERVER: No handler registered for ", addr
return None
Вы также можете проверить пример для вашего синтаксиса OSCServer.
Ты пытался 127.0.0.1
? это должно работать везде.
Я полагаю, что вы даете IP, который будет использовать сервер.
127.0.0.1
в основном означает: "слушай только локальные соединения".192.168.0.3
(в вашем случае) означает: "прослушивать соединения из всей подсети"0.0.0.0
означает: "слушай связи отовсюду".