text: # This example code is in the Public Domain (or CC0 licensed, at your option.)
  
  # Unless required by applicable law or agreed to in writing, this
  # software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
  # CONDITIONS OF ANY KIND, either express or implied.
  
  # -*- coding: utf-8 -*-
  
  from builtins import input
  import socket
  import sys
  
  # -----------  Config  ----------
  PORT = 3333
  IP_VERSION = 'IPv6'
  IPV4 = '192.168.0.167'
  IPV6 = 'fe80:0000:0000:0000:260a:c4ff:fe11:a1e0%wlp1s0'
  # -------------------------------
  
  if IP_VERSION == 'IPv4':
      addr = (IPV4, PORT)
      family_addr = socket.AF_INET
  elif IP_VERSION == 'IPv6':
      family_addr = socket.AF_INET6
      for res in socket.getaddrinfo(IPV6, PORT, socket.AF_INET6,
                                    socket.SOCK_DGRAM, socket.SOL_UDP):
          af, socktype, proto, canonname, addr = res
  else:
      print('IP_VERSION must be IPv4 or IPv6')
      sys.exit(1)
  
  
  try:
      sock = socket.socket(family_addr, socket.SOCK_DGRAM)
  except socket.error:
      print('Failed to create socket')
      sys.exit()
  
  while True:
      msg = input('Enter message to send : ')
      try:
          sock.sendto(msg.encode(), addr)
          reply, addr = sock.recvfrom(128)
          if not reply:
              break
          print('Reply[' + addr[0] + ':' + str(addr[1]) + '] - ' + str(reply))
      except socket.error as msg:
          print('Error Code : ' + str(msg[0]) + ' Message: ' + msg[1])
          sys.exit()
  