1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| # /usr/bin/python
# coding: utf-8
#HEADER PYTHON 2
#request = urllib.request("127.0.0.1:50000/")
#opener=urllib.build_opener()
#firstdatastream = opener.open(request)
#firstdatastream.headers.dict
#HEADER PYTHON 3
#a_url='127.0.0.1:50000/'
#data=urllib.request.urlopen(a_url).read()
#print(data)
import socket,os ,sys ,time ,signal, select, urllib.request
sigint=0 #tant qu'il est nul le siganl SIGINT n'a pas été reçu!
host=''
port = int(sys.argv[1])
def handler(sig, frame):
sigint=1
signal.signal(signal.SIGINT, handler)
size=1024
running=1
f1=os.open("success.log", os.O_CREAT)
sys.stdout=f1
#f2=os.open("error.log", os.O_CREAT)
#sys.stderr=f2
#Créer un socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#adresse+port
server.bind((host, port))
#c un socket serveur: attend une demande de connexion, file d'attente.
backlog=5 #par exemple
server.listen(backlog)#Taille de la file d'attente
while(sigint==0):
client = server.accept()
adresse = server.accept()
if os.path.exists(adresse)!=True:
f2.write("I can't find your URL! ")
sys.exit(1)
input = [server, sys.stdin]
while(running==1):
inputready, outputready, eceptready = select.select(input, [],[])
for s in inputready:
if s==server:
client, adress = server.accept()
input.append(client)
#PREPARATION DE LA REQUETE
#data=urllib.request.urlopen('127.0.0.1:50000/').read()
#La requete est de la forme: GET / HTTP/1.1 Host: www.google.fr Connection: Close
#envoi
#server.send(requete)
msg=client.recv(size)
if (msg[0]=='G' and msg[1]=='E' and msg[2]=='T'):
f1.write(msg, "a")
else:
f2.write("Where is GET? I can't find it! ", "w")
sys.exit(1)
elif s==sys.stdin:
junk=sys.stdin.readline()
f2.write(junk, "a")
running=0
else:
data=s.recv(size)
if data:
s.send(data)
print(data)
else:
s.close()
input.remove(s)
f1.close()
f2.close()
sock.close()
server.close() |
Partager