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