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)
運行: