09.08.2016, 21:51
Como puedo poner en mi server que para poder estar adentro del servidor tenga que tener un .exe abierto y si no lo tengas abierto que te saque
import time
from socket import *
# DATOS DEL SERVER
servidor = '83.222.116.222:1111';
partir_ip = servidor.split(':');
ip = str(partir_ip[0]);
puerto = int(partir_ip[1]);
socket = socket(AF_INET, SOCK_DGRAM);
socket.settimeout(1);
socket.sendto('Comprobando estado del servidor .. ', (ip, puerto))
try:
pack = '';
pack += 'SAMP';
spl = ip.split('.');
pack += chr(int(spl[0]));
pack += chr(int(spl[1]));
pack += chr(int(spl[2]));
pack += chr(int(spl[3]));
pack += chr(puerto & 0xFF);
pack += chr(puerto >> 8 & 0xFF);
pack += 'c';
socket.sendto(bytes(pack), (ip, puerto))
respuesta = socket.recv(1024);
print respuesta;
# Recive la informacion del server y aca puedes aprovechar un
# code de solicitud que luego aceptaras desde el server
# y como te digo, un hash de conexion para evitar conexiones fakes
except timeout:
print 'REQUEST TIMED OUT';
socket.close();
from socket import *
import sys;
import urllib2;
# DATOS DEL SERVER
servidor = '127.0.0.1:4225';
partir_ip = servidor.split(':');
ip = str(partir_ip[0]);
puerto = int(partir_ip[1]);
def getMyIP():
ret = urllib2.urlopen('https://enabledns.com/ip');
return ret.read();
def Main():
# OBTENEMOS IP DEL SOLICITANTE
solicitante = getMyIP();
sock = socket(AF_INET, SOCK_DGRAM);
sock.settimeout(10);
while 1:
sock.sendto("('PING', '%s'): Entro al servidor!" % solicitante, (ip, puerto))
print 'Intentando conectar a %s' % servidor;
try:
sock.sendto("('REQUEST', '%s'): Puedo entrar?" % solicitante, (ip, puerto))
respuesta = sock.recvfrom(1024);
respuesta = respuesta[0];
if respuesta == 'OK':
print 'El servidor te ha aceptado la peticion!';
else:
print 'El servidor te ha rechazado la peticion.';
break;
except timeout:
print 'REQUEST TIMED OUT';
break;
sock.close();
sys.exit();
Main();
import re;
import socket;
import sys;
UDP_IP = "127.0.0.1"
UDP_PORT = 4225;
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM);
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
print 'Iniciando servidor ..';
try:
sock.bind((UDP_IP, UDP_PORT))
except socket.error as msg:
print 'El enlace ha fallado. Error: ' + str(msg[0]) + ' Mensaje: ' + msg[1]
sys.exit(); # Cerrar aplicacion;
print 'Servidor iniciado, escuchando en ' + UDP_IP + ':' + str(UDP_PORT);
while 1:
data, addr = sock.recvfrom(1024);
if(data != ""):
req = re.compile("\('([^']+)', '([^']+)'\)").findall(data);
gen = req[0];
ip = gen[1];
solicitud = gen[0];
if solicitud == 'REQUEST':
entrante = addr[0] + ':' + str(addr[1]);
print '%s te envia una peticion de entrada' % entrante;
# Puedes buscar alguna forma de comprobar y ver que la IP cumpla tus requisitos, etc
sock.sendto("OK", (addr[0], addr[1])); # LE DECIMOS OKEY
print 'Aceptaste a %s en tu servidor.' % entrante;
elif solicitud == 'PING':
print 'Vale, que quieres?';
sock.close();