Socket

Bueno aqui sigo en la tarea de publicar algo cada semana, esta vez comparto con ustedes el codigo fuente de un Socket…

Pero que es un socket, es simplemente un software que nos permite recibir datos por medio de internet…, es muy util para las diferentes aplicaciones que necesiten comunicar por medio de internet, para mas informacion http://es.wikipedia.org/wiki/Socket_de_Internet, el código esta desarrollado en Python 2.x, para la versión 3.x no lo he ensayado…..

ya les dire mas en detalle en otra entrada porque python.., el codigo queda bajo la licencia GPL y todo lo que esta implica la mas reciente,Sin mas el Codigo:

# -*- coding: cp1252 -*-
# importaci�n de las librer�as necesarias
#Licencia GPL
#Author: Allan Galindo
import socket
import select
from decimal import *
import time
import thread

def accept_new_connection():
    # funci�n que acepta nueva conexi�n
    try:
        global server # utiliza la variable global server
        global desc # utiliza la variable global desc
        newsock, (remhost, remport) = server.accept()
        #acepta una conexion, retornando el socket nuevo,
        #la direcci�n del cliente y el puerto
        server.settimeout(.1)
        # establece el tiempo de espera, en este caso 100 milisegundos
        print "Se ha conectado %s:%s" % (str(remhost), str(remport))
        newsock.send("OK\r") # env�a un OK al cliente
        desc.append(newsock) # guarda la conexion remota
    except:
        pass

def get_msg(sock):
     try:
         msg = sock.recv(1024) # datos recibidos con un buffer de longitud 1024
         if msg != '' :
             print 'msg: %s'%(msg)
         sock.settimeout(.3) # tiempo de espera del socket
     except:
            pass

def inicio(sleeptime,*args):
    while 1:
        accept_new_connection() # llama a la funci�n
        # select.select espera a que el socket esta listo para leer
        (sread, swrite, sexc) = select.select(desc, [], [])
        for sock in sread: # recorre el resultado en sread
            if sock != server: # si el socket es diferente al del servidor
                get_msg(sock)# llama a la funci�n para obtener el car�cter recibido

        time.sleep(sleeptime) # duerme el hilo durante el tiempo especificado

#Definici�n de las variables globales
global server

print 'Servidor TCP'
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Definici�n del socket a utilizar
server.bind(("", 8000))
# puerto por el cual queda establecido el servidor
server.listen(30)
# cantidad de conexiones simultaneas que acepta
global desc
desc = [server]
# se llaman la funcion para que el servidor se ejecute por medio de hilos
thread.start_new_thread(inicio,(0.1,))
while 1:pass # ciclo infinito

simplemente se ejecuta este en script, y en Windows o en Linux simplemente en la consola ejecutan:

telnet localhost 8000

si el computador esta conectado a la IP publica, puede acceder desde otro PC por medio de esta IP publica

telnet x.x.x.x 8000

si el computador esta conectado a la red LAN de su empresa o de su casa pueden acceder por medio de la IP privada, y desde otro PC en la misma red LAN puede acceder a este

telnet 192.168.1.22 8000

Disfrutenlo……

Acerca de desarr0ll0
Desarrollo libre para todos.....

Deja un comentario