run_tcp_client.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
  2. # SPDX-License-Identifier: Unlicense OR CC0-1.0
  3. import argparse
  4. import os
  5. import socket
  6. DEF_PORT = 3333
  7. DEF_MESSAGE = 'Data to ESP'
  8. def tcp_client(address: str, port: int, payload: str) -> str:
  9. for res in socket.getaddrinfo(address, port, socket.AF_UNSPEC,
  10. socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
  11. family_addr, _, _, _, addr = res
  12. try:
  13. sock = socket.socket(family_addr, socket.SOCK_STREAM)
  14. sock.settimeout(60.0)
  15. except socket.error as msg:
  16. print('Could not create socket')
  17. print(os.strerror(msg.errno))
  18. raise
  19. try:
  20. sock.connect(addr)
  21. except socket.error as e:
  22. print('Could not open socket: ' + str(e))
  23. sock.close()
  24. raise
  25. sock.sendall(payload.encode())
  26. data = sock.recv(1024)
  27. if not data:
  28. return ''
  29. print('Reply : ' + data.decode())
  30. sock.close()
  31. return data.decode()
  32. def main() -> None:
  33. parser = argparse.ArgumentParser()
  34. parser.add_argument('remote_ip', help='TCP server ip address, eg: 192.168.1.1, fe80::2%%eth0')
  35. parser.add_argument('--port', default=DEF_PORT, type=int, help='TCP server port')
  36. parser.add_argument('--message', default=DEF_MESSAGE, help='Message to send to the server.')
  37. args = parser.parse_args()
  38. print(f'Send message to the server: {args.remote_ip}')
  39. data = tcp_client(args.remote_ip, args.port, args.message)
  40. print(f'Received From server: {data}')
  41. if __name__ == '__main__':
  42. main()