entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

-1voto

Error en Python 3.6 usando sockets "unsupported operand type(s) for +"

en mi anterior pregunta tuve un error con la clase socket y ahora tengo otro error

server

import socket

host = "127.0.0.1"
port = 6666

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print ("Socket Created")
sock.bind((host, port))
print ("socket bind complete")
sock.listen(1)
print ("socket now listening")

while 1:
    conn, addr = sock.accept()
    print ('Connected with ') + addr[0] + ':' + str(addr[1])

sock.close()

output

Socket Created
socket bind complete
socket now listening
Connected with

traceback (most recent call last):
file "server.py", line 18 in <module>
print("connected with") + addr[0] + ":" str(addr[1])
typeError : unsupported operand type(s) for +: 'NoneType' and 'str'

cliente

import socket

host = "127.0.0.1"
port = 6666

sock = socket.socket()

sock.connect((host, port))

while True:

  message = input("envia un mensaje")
  sock.send(message.encode('utf-8'))

  if message == "quit":
    break

  print("bye")
  sock.close()

carlossevi comentado Abr 5

El error es tan fácil de interpretar que parece mentira que ya hayas hecho varias preguntas sobre Python... Revisa la sintáxis de la línea que te indica a ver si encuentras algún error.

steven comentado Abr 5

no recuerdo haber hecho las mismas preguntas, si es asi te pido disculpas he retomado con python, sin embaro para mi no es tan facil de interpretar, no entiendo que hay de malo en esta linea

    print ('Connected with ') + addr[0] + ':' + str(addr[1])

Peter comentado Abr 5

¿Sabes cual es el error?

steven comentado Abr 5

negativo, cual puede ser segun tu

Peter comentado Abr 6

¿No sabes cual es el error que tienes que corregir?

No me refiero a la solución, si no a que error te esta dando y que te dice el error.

carlossevi comentado Abr 6

@Peter ha dado en el clavo: el error y su solución son dos cosas distintas. Para poder aprender de este error, necesitas entender cuál es, y no que simplemente te demos la solución. Céntrate en el mensaje:

traceback (most recent call last):
file "server.py", line 18 in <module>
print("connected with") + addr[0] + ":" str(addr[1])
typeError : unsupported operand type(s) for +: 'NoneType' and 'str'

steven comentado Abr 6

segun el error no soporta algun operador, no entiendo cual de ellos y porque

carlossevi comentado Abr 6

El error te está diciendo que el operador '+' no puede operar con los tipos 'NoneType' y 'str'. Busca dónde estás usando ese operador...

steven comentado Abr 6

y que puedo hacer al respecto, cual seria el operardor nonetype

1 Respuesta

1voto

carlossevi Puntos59880

Que conste en acta que según los comentarios anteriores, no has gastado ni una gota de esfuerzo en entender el mensaje de error ni leer documentación.

El error te está diciendo que el operador '+' no puede operar con los tipos 'NoneType' y 'str'. Veamos los usos que haces del operador en la línea del error:

print ('Connected with ') + addr[0] + ':' + str(addr[1])
                          ^         ^     ^

Supongo que el tipo 'str' lo conoces, es la cadena de texto. ¿Qué es el tipo 'NoneType'? Pues precisamente es el tipo de variable de una variable que no tiene valor.

El mensaje de error te dice que no puedes "sumar" (utilizar el operador '+' de adición) a una cadena de texto un elemento con valor nulo. ¿Y por qué?

Porque estás estás intentando concatenar la cadena addr[0] con el valor devuelto por print ('Connected with ') ¡que no devuelve ningún valor!

Parece ser que tienes un error con los paréntesis y el orden que se hacen las operaciones, porque seguramente querrás hacer la concatenación antes de imprimir el mensaje, y no después.

print ('Connected with ' + addr[0] + ':' + str(addr[1]))

steven comentado Abr 7

si pero mi problema requiere minimo un nivel avanzado de programacion orientado a obejetos y a redes, entiendo que puede ser un poco aburrido responder a un novato pero recuerda que ya hemos casi terminado, lo unico que falta es comunicar el server con el cliente, esto es mi ultimo deseo

carlossevi comentado Abr 7

Si considerase aburrido responder a un novato, no estaría aquí respondiendo preguntas. El problema no es que seas novato, no te confundas. El problema, repito una y mil veces, es que no tratas de estudiar ni entender lo que se te dice. En esta pregunta, ya he respondido a tu problema, no más deseos.

steven comentado Abr 7

si pero el codigo no hace nada mas que imprimir los mismos mensajes, asi no puede terminar, dame almenos una pista para seguir, porque no puedo responder desde mi servidor

Peter comentado Abr 7

El problema es que no sabes ni lo que tiene que hacer el código, como hacerlo, ni porque hacerlo... Entonces si no tienes ni idea de ninguna de las partes mas importantes, ¿que caso tiene decirte otras?

carlossevi comentado Abr 8

@steven he cambiado el título a tu pregunta para que se corresponda con el contenido de la misma, ya que en realidad el error no tenía nada que ver con sockets.

Si tienes más preguntas derivadas, ya sabes, puedes hacerlas.
Si la actual está resuelta, márcala como tal por favor.

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta