Python Forum

Full Version: ValueError: invalid literal for int() with base 10:
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi

I am new to python and am playing with some code that I got on an online course but am getting this error "ValueError: invalid literal for int() with base 10: 'terertsagdx'"...... I am connecting to the server with realterm and sending 'terertsagdx, as ascii but get the error and am not sure why ????

import socket 
import threading

HEADER = 64
PORT = 5050
SERVER = socket.gethostbyname(socket.gethostname())
ADDR = (SERVER, PORT)
FORMAT = 'utf-8'
DISCONNECT_MESSAGE = "!DISCONNECT"

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(ADDR)

def handle_client(conn, addr):
    print(f"[NEW CONNECTION] {addr} connected.")

    connected = True
    while connected:
            msg = conn.recv(1024).decode(ascii)
            print(msg)
            conn.send("Msg received")

    conn.close()
        

def start():
    server.listen()
    print(f"[LISTENING] Server is listening on {SERVER}")
    while True:
        conn, addr = server.accept()
        thread = threading.Thread(target=handle_client, args=(conn, addr))
        thread.start()
        print(f"[ACTIVE CONNECTIONS] {threading.activeCount() - 1}")


print("[STARTING] server is starting...")
start()
Thanks for any help
Quote:his error "ValueError: invalid literal for int() with base 10: 'terertsagdx'"......
Please show complete unmodified error traceback as it contains valuable diagnosis information.
On line 19 you may have meant to use decode('ascii') or just decode(). Passing in the ascii object is not correct.

Likewise on line 21, you're handing a string object to send(). You want to either encode that first, or just pass a byte object directly like send(b'Msg received')
ascii on line 19 doesn't seem to be declared anywhere, so I'd expect to see a NameError.
ascii is a built-in function, so it's already in the namespace without an assignment.
(Jun-10-2020, 07:59 PM)omega_elite Wrote: [ -> ]ValueError: invalid literal for int() with base 10

The error message invalid literal for int() with base 10 would seem to indicate that you are passing a string that's not an integer to the int() function . In other words it's either empty, or has a character in it other than a digit. You can solve this error by using Python isdigit() method to check whether the value is number or not. The returns True if all the characters are digits, otherwise False . The other way to overcome this issue is to wrap your code inside a Python try...except block to handle this error.

Sometimes the difference between Python2.x and Python3.x that leads to this ValueError: invalid literal for int() with base 10 . With Python2.x , int(str(3/2)) gives you "1". With Python3.x , the same gives you ("1.5"): ValueError: invalid literal for int() with base 10: "1.5".