Multicast 服務

功能需求

    • 分『服務程式』(Service)與『請求程式』(Client)。
    • 『請求程式』傳送命令列字串給『服務程式』。
    • 『服務程式』收到命令列字串後,再傳送回『請求程式』。
    • 『請求程式』傳送『quit』命令列字串給『服務程式』,『服務程式』會自動結束服務。

程式碼

    • 服務程式:
      • import socket import struct import sys MULTICAST_IP = '224.0.0.1' MULTI_PORT = 6543 BUFFER_SIZE = 10240 mySocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) mySocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) mySocket.bind(('', MULTI_PORT)) mreq = struct.pack('4sl', socket.inet_aton(MULTICAST_IP), socket.INADDR_ANY) mySocket.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) while True: myData = mySocket.recv(BUFFER_SIZE) if myData.lower() == 'quit': break print(myData)
    • 請求程式:
      • import sys import socket MULTICAST_IP = '224.0.0.1' MULTI_PORT = 6543 myMessage = 'Hello!' if len(sys.argv) > 1: myMessage = sys.argv[1] mySocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) mySocket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2) mySocket.sendto(myMessage, (MULTICAST_IP, MULTI_PORT)) if myMessage.lower() != 'quit': print(myMessage)

運行