when I run the following code:
#!/usr/bin/python3 ''' udp socket client Silver Moon ''' import socket # for sockets import sys # for exit # create dgram udp socket try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # except socket.error: except OSError as err: print('Failed to create socket') sys.exit() host = 'localhost' port = 8888 while True: msg = input('Enter message to send : ') try : # Set the whole string and convert encode the string to bytes s.sendto(str.encode(msg), (host, port)) # receive data from client (data, addr) d = s.recvfrom(1024) reply = d addr = d print('Server reply : ' + str(bytes.decode(reply))) # convert reply to string except OSError as err: # except Exception as err: print('Error Code : ' + str(msg) + ' Message ' + str(msg)) sys.exit()
s.sendto(str.encode(msg), (host, port))
throws the following error:
ValueError: invalid arguments
the line works on a full python environment. But it doesn't in micropython.
@Gijs Thanks. It was the localhost. Working fine now with an ip address.
It took me some time, but the issue is with 'localhost', the micropython expects an IP address there. Other than that, it should work fine once you are connected to a network