Socket
junio 7, 2011 Deja un comentario
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……