3
私はマルチキャストを実装する別のスタックオーバーフローの答え(どこを覚えていないか)から得たPythonコードの例をいくつか持っています。次のコードでは、マルチキャストパケットを受信するソケットオブジェクトを設定する必要があります。 私はそうのようなクラスでそれをカプセル化:python奇数マルチキャストソケット例外
class Multisock:
def __init__(self, MCAST_GRP, MCAST_PORT, packsize):
import socket
import struct
self.MCAST_GRP = MCAST_GRP
self.MCAST_PORT = MCAST_PORT
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.sock.bind(('', MCAST_PORT))
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)
self.sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
が、これは私にこのエラーを与える:本当に混乱して
Traceback (most recent call last):
File "./Audiorecv.py", line 41, in <module>
sock = MulticastNetworking.Multisock('244.1.1.1', 5007, chunk)
File "/home/wheybags/Multicast-Voice-Chat/MulticastNetworking.py", line 30, in __init__
self.sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 22] Invalid argument
ので、私はただの文字列に静的にMCAST_GRPを設定している場合ipを表すと動作しますが、コンストラクタ引数を使用しようとすると上記のエラーが発生します。
これを使用するとどうなりますか? 'mreq = struct.pack(" = 4sl "、socket.inet_aton(MCAST_GRP)、socket.INADDR_ANY)' –
でも同じエラーが出る – wheybags
有効な[マルチキャストアドレス](http://en.wikipedia。 org/wiki/Multicast_address#IPv4)、そのエラーが発生します。 244.1.1.1は有効ではありません。 – ext