Run server and client in seperate terminals. Server first then client.
import socket
host = ''
port = 51424
server_port = 51423
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.bind((host, port))
data = "Secret key : s76fshg23"
try:
message, address = s.recvfrom(8192)
print("Got data, addr from client - ")
print("Data : ", message.decode())
print("Address : ", address)
s.sendto(data.encode(), ('<broadcast>', server_port))
except (KeyboardInterrupt, SystemExit):
exit()
import socket
host = ''
port = 51424
server_port = 51423
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.bind((host, port))
data = "Secret key : s76fshg23"
try:
s.sendto(data.encode(), ('<broadcast>', server_port))
message, address = s.recvfrom(8192)
print("Got data, addr from server - ")
print("Data : ", message.decode())
print("Address : ", address)
except (KeyboardInterrupt, SystemExit):
exit()
- Check out this interesting pythonsheet on
Socket
: https://www.pythonsheets.com/notes/python-socket.html - Another way to broadcast (run in two terminals) :
Server :
import socket
import time
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('', 0))
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)
while True:
data = '{0}\n'.format(time.strftime("%H:%M:%S", time.localtime()))
sock.sendto(data.encode(), ('<broadcast>', 5566))
time.sleep(5)
Client :
$ nc -k -w 1 -ul 5566
22:45:45
22:45:50
this code do nothing!