TU ANUNCIO / YOUR PUBLICITY

AQUÍ PODRÍA ESTAR TU ANUNCIO: / HERE COULD BE YOUR AD E-mail

domingo, 25 de mayo de 2014

MiniServer with PYTHON / Miniservidor con PYTHON

A veces, no queremos que nuestro ordenador se convierta en un servidor con todo el montaje de Apache, PHP y demás sino que simplemente mande una información por un puerto. Esto se puede conseguir con Python de la siguiente manera:

Sometimes we do not want your computer to become a server with all mounting Apache, PHP and others but simply send an information for a port. This can be achieved with Python follows:

Programación del lado del servidor:
Server program:

servidor.py:

- No necesita cliente.py. Le basta un navegador.
#!/usr/bin/python
import socket
import time
puerto = 4444; #si es menor de 1000 deberá invocarlo sudo
miSocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
#miSocket.bind( ( socket.gethostname(), puerto ) )
miSocket.bind( ( 'localhost', puerto ) )
miSocket.listen( 1 )
while True:
da = time.time()
channel, details = miSocket.accept()
recibido = channel.recv(1024)
channel.send( '<html><body><input type="button" value="' + recibido + "--" + time.asctime(time.localtime(da)) + '"></body></html>')
channel.close()

- Necesita cliente.py
#!/usr/bin/python
import socket
s = socket.socket()
s.bind(("localhost", 9999))
s.listen(1)
sc, addr = s.accept()
while True:
recibido = sc.recv(1024)
if recibido == "quit":
break
print "Recibido:", recibido
sc.send(recibido)
print "adios"
sc.close()
s.close()


Programación del lado del cliente:
Client program

cliente.py:

- Cuando se necesita cliente.py
#!/usr/bin/python
import socket
s = socket.socket()
s.connect(("localhost", 9999))
while True:
mensaje = raw_input("'?> ")
s.send(mensaje)
if mensaje == "quit":
break
print "adios"
s.close()

- Cuando no se necesita cliente.py y su opción en el navegador

#!/usr/bin/python
import socket
miSocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
#miSocket.connect( (socket.gethostname(), 4545 ) )
miSocket.connect( 'localhost', 4545 ) )
data, server = miSocket.recvfrom( 100 )
print data
miSocket.close()


No hay comentarios:

Publicar un comentario