как semd изображения через http с python 2.7 сокетов - PullRequest
0 голосов
/ 06 февраля 2019

привет, я пытаюсь создать HTTP-сервер с python2.7 для цифрового фестиваля в моем городе.Я отправляю все файлы HTML правильно, но я не могу отправить и просмотреть изображения, которые я отправляю.есть код режима, но он не имеет ничего общего с этой ошибкой, также мне 14, поэтому не вините меня, я использую <body background='image.jpg'> в HTML, но он не просматривает изображение и говорит, что его тип - документ, а не image/jpg

import socket,threading,time,os,optparse
class functions():
    ##setting arguments
    def __init__(self,host,port,msg,listeners):
        self.host=host
        self.port=port
        self.conns=0
        self.msg=msg
        self.listeners=listeners
        self.good_request="HTTP/1.0 200 OK\r\n\r\n"
        self.bad_request="404 Error\nPAGE NOT FOUND"
        self.get_request="GET / HTTP/1.1\r\nHost: %s\r\n\r\n"%self.host
        self.mainmsg="""
<html>
    <h1>http serve by j0ck3r2004</h1>
</html>
"""

    ##bind address
    def binder(self):
        try:
            s.bind((self.host,self.port))
            print "STARTED SERVER ON %s:%d"%(self.host,self.port)
        except Exception,e:
            print e
            exit()
        s.listen(self.listeners)


    def serve(self):
        ##starts loop
        while True:
            ##accepts connections
            conn,addr=s.accept()

           ##tries
           try:

                ##recives data from the connection
                request=conn.recv(1024)

                ##defines the location
                filename=request.split()[1]                

                print addr[0]+' Conected at '+str(addr[1])+" HTTP GET "+str(filename)


                ##checks for default dir
                if filename=='/':
                    ##sends good request
                    conn.send(self.good_request)

                    ##reads index
                    F=open('index.html')
                    output=F.read()

                    ##sends index
                    for i in range(0,len(output)):
                        conn.send(output[i])  

                else:
                    ##reads webpage
                    F=open(filename[1:])
                    output=F.read()

                    ##sends good request
                    conn.send(self.good_request)

                    ##sends webpage
                    for i in range(0,len(output)):
                        conn.send(output[i])                


            ##if fails
            except Exception,e:
                try:
                    conn.send(self.bad_request)
                except Exception,e:
                    print e


##functions calling
class main():
   ## parsers

    parser=optparse.OptionParser('python ftp-brute.py -H '+\
     '<localhost> -P <port to serve on> -L <listeners>')
    parser.add_option('-H',dest='host',type='string',\
    help='localhost')
    parser.add_option('-P',dest='port',type='int',\
    help='port to serve on')
    parser.add_option('-L',dest='listeners',type='int',\
    help='listeners')   

    parser.add_option('-M',dest='mode',type='int',help='mode <1=http         server 2=connect 3=chat server 4=send data>')

    parser.add_option('-m',dest='msg',type='string',help='<message>')


    (options,args)=parser.parse_args()
    listeners=0
    msg=""
    host=options.host
    port=options.port
    mode=options.mode
    msg=options.msg
    listeners=options.listeners
    if (host==None) | (port==None):
        print parser.usage
    else:
        print ("\033[1mAuthor : my name\033[0m")
        global addr,s,conn,p
        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)  
        p=functions(host,port,msg,listeners)
    if mode==1:
        if (host==None) | (port==None) | (listeners==None):
            print parser.usage
            exit()
        else:
            try:


                s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    ##          creds=raw_input('host:port:listeners : ')
    ##         creds=creds.split(':')
    ##         host=creds[0]
    ##         port=int(creds[1])
    ##         listeners=int(creds[2])


            ##BINDS HOST
                p.binder()
                ##HANDLES REQUESTS
                p.serve()
            except KeyboardInterrupt:
                print "\nSTOPPING SERVER"
                s.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...