sending images via socket?

rainlet orrego at mail2000.com.tw
Tue Sep 25 00:18:56 EDT 2001


I wrote a simple server in Python. It works well when sending HTML
file. But the browser will display image in a text form ( many strange
ASCII code ). I read the image files in the way :

FD = open ( FILE, "rb" )

and I send this also :

NEWSOCK.send ( "Content-Type: image/" + FILETYPE )

Can anyone tell me what's wrong?

Thank you very much!




The source followed (if you'd like to view ^_^):

# CODE START

import socket
import string
import time

MYSOCK = socket.socket( socket.AF_INET, socket.SOCK_STREAM )

MYSOCK.bind ( ( "163.22.33.131", 3333 ) )

print ( "Rainlet Server Version 1.0 Start!" )

MYSOCK.listen ( 5 )

while 1 :

    NEWSOCK, ADDR = MYSOCK.accept ( )

    print ADDR

    MSG = NEWSOCK.recv ( 6000 )
    
    MSGLIST = MSG.split ( "\n" )
    FILELIST = MSGLIST [ 0 ].split ( )
    FILE = FILELIST [ 1 ] [ 1 : ]
    FILETYPELIST = FILE.split ( "." )
    FILETYPE = FILETYPELIST [ 1 ] 
    print MSG, FILE, FILETYPE
    
    if FILETYPE == "html" :
        FD = open ( FILE, "r" )
        FCONTENT = FD.read ( )
        
    elif FILETYPE == "png" or FILETYPE == "jpeg" or FILETYPE == "gif"
:
        FD = open ( FILE, "rb" )
        FCONTENT = FD.read ( )
        
    print ( "HTTP/1.1 200 OK" )
    print (  "Date: " + time.strftime("%a, %d %b %Y %H:%M:%S GMT+8",
time.gmtime()))
    
    if FILETYPE == "html" :
        print ( "Content-Type: text/" + FILETYPE )
        
    elif FILETYPE == "png" or FILETYPE == "jpeg" or FILETYPE == "gif"
:
        print ( "Content-Type: image/" + FILETYPE )
        
    print ( "Content-Length: " + str ( len ( FCONTENT ) ) )
    print ( "\n" )    
    
    

    NEWSOCK.send ( "HTTP/1.1 200 OK" )
    NEWSOCK.send (  "Date: " + time.strftime( "%a, %d %b %Y %H:%M:%S
GMT+8", time.gmtime( ) ) )
    
    if FILETYPE == "html" :
        NEWSOCK.send ( "Content-Type: text/" + FILETYPE )
        
    elif FILETYPE == "png" or FILETYPE == "jpeg" or FILETYPE == "gif"
:
        NEWSOCK.send ( "Content-Type: image/" + FILETYPE )
        
    NEWSOCK.send ( "Content-Length: " + str ( len ( FCONTENT ) ) )
    NEWSOCK.send ( "\n" )
    NEWSOCK.send ( FCONTENT )
    NEWSOCK.send ( "\n" )

    NEWSOCK.close ( )

MYSOCK.close ( )



More information about the Python-list mailing list