udpserver.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. # This example code is in the Public Domain (or CC0 licensed, at your option.)
  2. # Unless required by applicable law or agreed to in writing, this
  3. # software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
  4. # CONDITIONS OF ANY KIND, either express or implied.
  5. # -*- coding: utf-8 -*-
  6. import socket
  7. import sys
  8. # ----------- Config ----------
  9. IP_VERSION = 'IPv4'
  10. PORT = 3333
  11. # -------------------------------
  12. if IP_VERSION == 'IPv4':
  13. family_addr = socket.AF_INET
  14. elif IP_VERSION == 'IPv6':
  15. family_addr = socket.AF_INET6
  16. else:
  17. print('IP_VERSION must be IPv4 or IPv6')
  18. sys.exit(1)
  19. try:
  20. sock = socket.socket(family_addr, socket.SOCK_DGRAM)
  21. sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  22. except socket.error as msg:
  23. print('Failed to create socket. Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
  24. sys.exit()
  25. try:
  26. sock.bind(('', PORT))
  27. except socket.error as msg:
  28. print('Bind failed. Error: ' + str(msg[0]) + ': ' + msg[1])
  29. sys.exit()
  30. while True:
  31. try:
  32. print('Waiting for data...')
  33. data, addr = sock.recvfrom(1024)
  34. if not data:
  35. break
  36. data = data.decode()
  37. print('Reply[' + addr[0] + ':' + str(addr[1]) + '] - ' + data)
  38. reply = 'OK ' + data
  39. sock.sendto(reply.encode(), addr)
  40. except socket.error as msg:
  41. print('Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
  42. sock.close()