Skip to content

Instantly share code, notes, and snippets.

@pirate
Created December 4, 2017 16:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pirate/013680946a865cd1145aab9e20f792b7 to your computer and use it in GitHub Desktop.
Save pirate/013680946a865cd1145aab9e20f792b7 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
"""UDP Broadcast Sender"""
import socket
import sys
PORT = 33333
def udp_send_socket():
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
return udp_socket
def send_runloop(sock, port=PORT):
while True:
data = input('>> ').strip()
if sock.sendto(data.encode(), ('255.255.255.255', port)):
print(f"[SEND] 255.255.255.255: '{data}'\n")
if data == 'stop':
break
sock.close()
print('Client stopped.')
if __name__ == '__main__':
print(f'Sending on UDP port {PORT}')
sock = udp_send_socket()
send_runloop(sock)
==========================================================================
#!/usr/bin/env python3
"""UDP Broadcast Listener"""
import socket
import sys
PORT = 33333
def udp_listen_socket(host='', port=PORT):
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind((host, port))
return udp_socket
def recv_runloop(sock):
while True:
data, addr = sock.recvfrom(1024)
if data == 'stop':
print('Client wants me to stop.')
break
else:
print(f"[RECV] {addr[0]}: '{data}'\n")
sock.close()
print('Server stopped.')
if __name__ == '__main__':
print(f'Listening on UDP port {PORT}')
sock = udp_listen_socket()
recv_runloop(sock)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment