elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Duda, instrucción shutdown() - sockets python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda, instrucción shutdown() - sockets python  (Leído 2,159 veces)
painpills

Desconectado Desconectado

Mensajes: 41


404


Ver Perfil WWW
Duda, instrucción shutdown() - sockets python
« en: 4 Julio 2021, 19:16 pm »

Estuve creando un cliente y servidor, el código que estoy dejando es el del cliente, que se conecta a al servidor y luego se queda a la escucha de una orden, la única a la que responde ahora mismo es a la de tomar un screenshot y enviarla hacia al servidor, al principio el servidor nunca dejaba de recibir información por lo que se quedaba trabado, luego investigando descubrí la instrucción shutdown() que le indicaba al servidor que ya no estaba recibiendo información así podía recibir la imagen e ingresar otra orden. Mi problema es que s.shutdown(socket.SHUT_WR) lo que hace es cerrar uno de los lados de la conexión impidiéndole al cliente enviar información a través del socket así que cuando nuevamente doy la orden de tomar un screenshot el cliente la recibe pero no puede enviar la imagen, saben alguna solución o una forma de "reabrir" el socket para nuevamente enviar información hacia al servidor?

Código:

import socket
import pyscreenshot




HOST = 'localhost'
PORT = 4444

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))

print('Conexión establecida')

while True:
orden = s.recv(1024)

if orden == b'screenshot':
#tomo un pantallazo y lo guardo en formato png

img = pyscreenshot.grab()
img.save("captura.png")

#abro la imagen en modo lectura binaria para enviarla

f = open("captura.png", "rb")
imagen = f.read()

while imagen:
s.send(imagen)
imagen = f.read()

# se termina el envio de la imagen

print("Imagen enviada")
s.shutdown(socket.SHUT_WR)
f.close()
del(f)



Dejo también el código del servidor, por si sirve de algo

Código:
import socket
import datetime

fechayhora = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S')



HOST = 'localhost'
PORT = 4444

socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.bind((HOST, PORT))
socket.listen()

print('Servidor a la escucha...')

conn, addr = socket.accept()

print('Conexión entrante de ' + str(addr))

with conn:

while True:
orden = input('Ingresa una orden: ')
orden = orden.lower()

if orden == 'screenshot':
conn.send(b'screenshot')

#recibo la imagen enviada desde el cliente
f = open('capturas\\screenshot_' + str(fechayhora) + '.png', 'wb')
imagen = conn.recv(1024)

while imagen:

f.write(imagen)
imagen = conn.recv(1024)


f.close()
print('Imagen recibida')


elif orden == 'salir':
quit()


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda, instrucción shutdown() - sockets python
« Respuesta #1 en: 4 Julio 2021, 23:27 pm »

la intencion original seria no cerrar el socket hasta saber que no lo vas a usa nuevamente

en tal caso de usar shutdown, te toca llamar de nuevo al servidor y abrir una nueva conexion


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] Sockets en Python [+Ejemplos y Ejercicios]
Scripting
Erik# 4 15,135 Último mensaje 4 Abril 2013, 16:43 pm
por SelTzeR
Python + Sockets
Scripting
anarquistadel89 5 5,780 Último mensaje 3 Diciembre 2009, 04:01 am
por pucheto
Sockets en Python
Scripting
Br1ant 8 4,153 Último mensaje 2 Abril 2015, 19:44 pm
por Br1ant
[Batch] Duda con instrucción
Scripting
lsfer010 4 3,638 Último mensaje 11 Octubre 2017, 06:34 am
por lsfer010
Sockets python
Scripting
Sentex 1 2,216 Último mensaje 20 Enero 2018, 02:47 am
por rub'n
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines