Python - Python sockets - pasar del cliente al servidor una variable

 
Vista:

Python sockets - pasar del cliente al servidor una variable

Publicado por Sara (2 intervenciones) el 21/04/2020 19:07:47
Hola, tengo el siguiente problema:
Quiero pasar del cliente al servidor una variable.
Es decir, en lugar del input que hay escrito: mens = input("Mensaje desde Cliente a Servidor >> ")
Lo que quiero es pasar una variable que ya ha sido definida en una función anteriormente.
Aquí abajo dejo mi código.
Gracias.

CLIENTE

1
2
3
4
5
6
7
8
9
10
11
12
13
import socket
host = "localhost"
port = 1111
cli = socket.socket()
cli.connect((host, port))
print("Conectado al servidor")
 
while True:
    mens = input("Mensaje desde Cliente a Servidor >> ")
    cli.send(mens.encode("ascii"))
    recibido = cli.recv(1024)
    print(recibido)
cli.close()


SERVIDOR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import socket
servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
servidor.bind(("", 1111))
servidor.listen(1)
cliente, addr = servidor.accept()
 
while True:
    recibido = cliente.recv(1024)
    print("Recibo conexion de la IP: " + str(addr[0]) + " Puerto: " + str(addr[1]))
    print(recibido)
    msg_toSend=("mensaje recibido desde el cliente")
    cliente.send(msg_toSend.encode("ascii"))
 
cliente.close()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Python sockets - pasar del cliente al servidor una variable

Publicado por joel (901 intervenciones) el 22/04/2020 07:47:26
Hola Sara, no entiendo donde esta el problema... puedes enviar la variable sin problema, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Python sockets - pasar del cliente al servidor una variable

Publicado por tincopasan (1082 intervenciones) el 22/04/2020 08:35:14
la verdad que no eres muy clara en tu planteo, pero te muestro un ejemplo usando una función con tu código:
Servidor:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#-*- coding: utf -8 -*-
import socket
servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
servidor.bind(("", 8888))
servidor.listen(1)
cliente, addr = servidor.accept()
 
while True:
 
    recibido = cliente.recv(1024)
    print("Recibo conexion de la IP: " + str(addr[0]) + " Puerto: " + str(addr[1]))
    print(recibido.decode('utf-8', 'backslashreplace'))
    msg_toSend=("mensaje recibido desde el cliente")
    cliente.send(msg_toSend.encode("ascii"))
 
cliente.close()

cliente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#-*- coding: utf -8 -*-
import socket
host = "localhost"
port = 8888
cli = socket.socket()
cli.connect((host, port))
print("Conectado al servidor")
 
def cadena():
    a = b'\x68\x6f\x6c\x61\x00\x6d\x75\x6e\x64\x6f'
    return a
 
while True:
    #mens = input("Mensaje desde Cliente a Servidor >> ")
    input("Enviar Datos")
    mens = cadena()
    cli.send(mens)
    recibido = cli.recv(1024)
    print(recibido)
cli.close()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Python sockets - pasar del cliente al servidor una variable

Publicado por Sara (2 intervenciones) el 22/04/2020 11:38:28
Hola, tu codigo me ha sido de mucha ayuda, gracias.
Pero ahora como podría hacer para mandar una variable de tipo entero.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Python sockets - pasar del cliente al servidor una variable

Publicado por tincopasan (1082 intervenciones) el 22/04/2020 12:13:04
lo modifique para enteros, pero hay muchos métodos para esto, y hay que tener en cuenta otras posibilidades de las variables, si son por ejemplo endian.pequeño o grande.
Ahora si querés hacer un uso adecuado de sockets no sirve solo copiar códigos, tenés que leer sobre bytes y codificaciones.

Servidor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#-*- coding: utf -8 -*-
 
import socket
 
servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
servidor.bind(("", 8888))
servidor.listen(1)
cliente, addr = servidor.accept()
 
 
while True:
 
    recibido = cliente.recv(1024)
    print("Recibo conexion de la IP: " + str(addr[0]) + " Puerto: " + str(addr[1]))
    print(int.from_bytes(recibido, byteorder='big'))
    msg_toSend=("mensaje recibido desde el cliente")
    cliente.send(msg_toSend.encode("ascii"))
 
cliente.close()

cliente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#-*- coding: utf -8 -*-
import socket
 
host = "localhost"
port = 8888
cli = socket.socket()
cli.connect((host, port))
print("Conectado al servidor")
 
 
 
def  entero():
     a = (9876).to_bytes(2, byteorder="big")
     return a
 
while True:
    input("Enviar Datos")
    mens = entero()
    cli.send(mens)
    recibido = cli.recv(1024)
    print(recibido)
 
cli.close()

No escribiré más códigos, salvo que tengas un problema específico, porque ni siquiera haces un intento de código

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar