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

no puedo recibir el mensaje del servidor

el mensaje de bienvenida de mi servidor no puede llegar al cliente

#servidor
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()
    datos = conn.recv(4096)
    print(datos.decode('UTF-8'))

    conn.send("esto es un mensaje de bienvenida".encode('UTF-8'))
#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'))

  conn, addr = sock.accept()
  datos = conn.recv(4096)
  print (datos.decode('utf-8'))

  if message == "quit":
    break
    print("bye")
    sock.close()

output

**traceback (most recent call last) file "client.py", line 16 in conn, addr = sock.accept()

file "f:\python\lib\socket.py", line 205 in accept fd, addr = self.accept()

OSerror = [winerror 10022] se ha proporcionado un argumento no valido**

carlossevi comentado Abr 12

Tu proceso iterativo: partes de una base de código anterior o copiado de algún sitio. Te lees algún foro, artículo, documentación... copias una línea aislada pensando que eso resuelve algo y lógicamente falla. Tratas de conseguir que alguien te lo arregle y vuelves al primer punto.

¿Aún te preguntas por qué falla? ¿Has leído el texto del error?

Si no lo entiendes te lo traduzco:

Has copiado una línea de código suelta sin entenderla y lógicamente no funciona, porque ni siquiera las variables se llaman igual.

¿Qué es add en tu código?

steven comentado Abr 12

si falle primero en eso pero despues lo corregi y lo edite sin embargo tengo un error nuevo, el ejemplo lo he tomado del articulo que tu me recomendaste

1 Respuesta

1voto

carlossevi Puntos61050

Es que no pones interés ni en copiar bien.

Tomas como ejemplo:

while 1:
    add, port = server.accept()
    add.send("hola mundo!!!") 

Sin embargo escribes:

while 1:
    conn, addr = sock.accept()
    print ('Connected with ' + addr[0] + ':' + str(addr[1]))
    sock.send("esto es un mensaje de bienvenida")

¿Ves alguna diferencia?

steven comentado Abr 12

esta bien de todos modos no quiere funcionar

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:
    sock, addr = sock.accept()
    print ('Connected with ' + addr[0] + ':' + str(addr[1]))
    sock.send("hello")

sock.close()

o sino

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

traceback(most recent call)
file server.py line 16 in <module>
sock.send("hello") o conn.send("hello")
TypeError : a bytes like object is required, not 'str'

steven comentado Abr 12

@carlossevi que significa TypeError : a bytes like object is required, not 'str' y cual es la causa del error

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()

    conn.send("hello")

steven comentado Abr 12

disculpa pero aparecens solo resultados en ingles, ademas el codigo esta costruido de otra manera con otros metodos que todavia no conosco

magarzon comentado Abr 12

@steven, cuando copies código, además de entenderlo antes de usarlo en tu propio código, asegúrate que es para la versión del lenguaje que estás usando. El ejemplo que has copiado es para Python 2.x, por el error que te da, es seguro que tú estás usando Python 3.x, en el que ya no puedes enviar un mensaje como string simplemente, si no que tienes que utilizar un "objeto", como te dice el error. Y cómo se consigue ese "objeto"? Pues así:

    msg = "hello"
    conn.send(msg.encode('UTF-8'))

Y esto, sin tener ni idea de Python, solo con un poco de sentido común y entendiendo las respuestas que me han dado las búsquedas.

steven comentado Abr 13

tienes razon mi problema es que soy lento a entender por eso busco ejemplo sencillos con explicacion detallada, que paso con mi ultima pregunta estaba esperando una respuesta me quede mirando todo el dia la campanita
porfa puedes mirar mi otra pregunta no es codigo copiado
problema logico

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

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


Otras Preguntas y Respuestas


Actividad Reciente

...

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

Conecta