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**

0voto

carlossevi comentado

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?

0voto

steven comentado

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 Puntos63580

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?

0voto

steven comentado

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'

0voto

steven comentado

@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")

1voto

carlossevi comentado

-1voto

steven comentado

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

0voto

magarzon comentado

@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.

-1voto

steven comentado

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.

Otras Preguntas y Respuestas


...

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

Conecta