tcpclient.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. from builtins import input
  7. import socket
  8. import sys
  9. # ----------- Config ----------
  10. PORT = 3333
  11. IP_VERSION = 'IPv6'
  12. IPV4 = '192.168.0.42'
  13. IPV6 = 'fd00:0000:0000:0000:260a:c4ff:fe09:885c'
  14. # -------------------------------
  15. if IP_VERSION == 'IPv4':
  16. family_addr = socket.AF_INET
  17. addr = (IPV4, PORT)
  18. elif IP_VERSION == 'IPv6':
  19. family_addr = socket.AF_INET6
  20. for res in socket.getaddrinfo(IPV6, PORT, socket.AF_INET6,
  21. socket.SOCK_STREAM, socket.SOL_TCP):
  22. af, socktype, proto, canonname, addr = res
  23. else:
  24. print('IP_VERSION must be IPv4 or IPv6')
  25. sys.exit(1)
  26. try:
  27. sock = socket.socket(family_addr, socket.SOCK_STREAM)
  28. except socket.error as msg:
  29. print('Could not create socket: ' + str(msg[0]) + ': ' + msg[1])
  30. sys.exit(1)
  31. try:
  32. sock.connect((IPV6, PORT))
  33. except socket.error as msg:
  34. print('Could not open socket: ', msg)
  35. sock.close()
  36. sys.exit(1)
  37. while True:
  38. msg = input('Enter message to send: ')
  39. assert isinstance(msg, str)
  40. msg = msg.encode()
  41. sock.sendall(msg)
  42. data = sock.recv(1024)
  43. if not data:
  44. break
  45. print('Reply: ' + data.decode())
  46. sock.close()