Python论坛  - 讨论区

标题:[python-chinese] socket实现一个simple http server

2006年07月19日 星期三 17:02

Lea.Cen leacen at gmail.com
Wed Jul 19 17:02:36 HKT 2006

看到书上这个玩意,又自己动手试了下,(用浏览器来浏览http://localhost:86)但是没有结果!

对这个(http server)还不是很理解,谁能指点一下吗?

from socket import *
import thread

def handler(clientsock,addr):
       while 1:
             data = clientsock.recv(BUFSIZ)
             if not data: break
             print data
             clientsock.send(data)
             clientsock.send("Hello!")
       clientsock.close()

if __name__=='__main__':
       HOST = 'localhost'
       PORT = 86
       BUFSIZ = 1024
       ADDR = (HOST, PORT)
       serversock = socket(AF_INET, SOCK_STREAM)
       serversock.bind(ADDR)
       serversock.listen(2)

       while 1:
             print 'waiting for connection…'
             clientsock, addr = serversock.accept()
             print 'connected from:', addr
             thread.start_new_thread(handler, (clientsock, addr))


-- 
_______________________________________________
Python中文技术讨论邮件列表
发言: 发邮件到 python-chinese at lists.python.cn
订阅: 发送 subscribe 到 python-chinese-request at lists.python.cn
退订: 发送 unsubscribe 到  python-chinese-request at lists.python.cn
详细说明: http://python.cn/mailman/listinfo/python-chinese
My webSite: http://www.scweb.cn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060719/2f96d22b/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月19日 星期三 17:20

张骏 zhangj at foreseen-info.com
Wed Jul 19 17:20:37 HKT 2006

HTTP 协议不光是html内容,它还包括HTTP Header。

你可以参考下 lib/SimpleHTTPServer.py

如果要做 HTTP Server,需要先研究http协议。

如果想要了解socket,可以实现一个简化的telnet,客户端发送命令,服务段执行并返回结果。

在 2006-7-19 17:02:36,Lea.Cen <leacen at gmail.com> 写道:
> 看到书上这个玩意,又自己动手试了下,(用浏览器来浏览http://localhost:86)但是没有结果!
> 
> 对这个(http server)还不是很理解,谁能指点一下吗?
> 
> from socket import *
> import thread
> 
> def handler(clientsock,addr):
>        while 1:
>              data = clientsock.recv(BUFSIZ)
>              if not data: break
>              print data
>              clientsock.send(data)
>              clientsock.send("Hello!")
>        clientsock.close()
> 
> if __name__=='__main__':
>        HOST = 'localhost'
>        PORT = 86
>        BUFSIZ = 1024
>        ADDR = (HOST, PORT)
>        serversock = socket(AF_INET, SOCK_STREAM)
>        serversock.bind(ADDR)
>        serversock.listen(2)
> 
>        while 1:
>              print 'waiting for connection…'
>              clientsock, addr = serversock.accept()
>              print 'connected from:', addr
>              thread.start_new_thread(handler, (clientsock, addr))
> 
> 
> -- 
> _______________________________________________
> Python中文技术讨论邮件列表
> 发言: 发邮件到 python-chinese at lists.python.cn
> 订阅: 发送 subscribe 到 python-chinese-request at lists.python.cn
> 退订: 发送 unsubscribe 到  python-chinese-request at lists.python.cn
> 详细说明: http://python.cn/mailman/listinfo/python-chinese
> My webSite: http://www.scweb.cn



-- 
张骏 <zhangj at foreseen-info.com>

敏捷来自Python
简单源于我们
丰元信信息技术有限公司

Python技术交流群:22507237



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月19日 星期三 17:30

gashero harry.python at gmail.com
Wed Jul 19 17:30:24 HKT 2006

响应的HTTP数据包不应该仅仅是HTML文件的,还应改包括HTTP包头,我指响应包头。比如如下的:

HTTP/1.1 200 OK
Date: Wed, 19 Jul 2006 06:10:33 GMT
Server: Apache/1.3.27
Cache-Control: max-age=86400
Expires: Thu, 20 Jul 2006 06:10:33 GMT
Last-Modified: Thu, 13 Jul 2006 10:11:00 GMT
ETag: "15ae60-aad-44b61c34"
Accept-Ranges: bytes
Content-Length: 2733
Content-Type: text/html

这个包头是baidu.com的,你也可以借用,但是注意去除或者修改Content-Length字段,有些字段很无聊的可以丢弃。包头后面就是HTML代码就可以了。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月19日 星期三 17:32

Lea.Cen leacen at gmail.com
Wed Jul 19 17:32:23 HKT 2006

非常感谢,呵呵!去看看去

On 7/19/06, 张骏 <zhangj at foreseen-info.com> wrote:
>
> HTTP 协议不光是html内容,它还包括HTTP Header。
>
> 你可以参考下 lib/SimpleHTTPServer.py
>
> 如果要做 HTTP Server,需要先研究http协议。
>
> 如果想要了解socket,可以实现一个简化的telnet,客户端发送命令,服务段执行并返回结果。
>
> 在 2006-7-19 17:02:36,Lea.Cen <leacen at gmail.com> 写道:
> > 看到书上这个玩意,又自己动手试了下,(用浏览器来浏览http://localhost:86)但是没有结果!
> >
> > 对这个(http server)还不是很理解,谁能指点一下吗?
> >
> > from socket import *
> > import thread
> >
> > def handler(clientsock,addr):
> >        while 1:
> >              data = clientsock.recv(BUFSIZ)
> >              if not data: break
> >              print data
> >              clientsock.send(data)
> >              clientsock.send("Hello!")
> >        clientsock.close()
> >
> > if __name__=='__main__':
> >        HOST = 'localhost'
> >        PORT = 86
> >        BUFSIZ = 1024
> >        ADDR = (HOST, PORT)
> >        serversock = socket(AF_INET, SOCK_STREAM)
> >        serversock.bind(ADDR)
> >        serversock.listen(2)
> >
> >        while 1:
> >              print 'waiting for connection…'
> >              clientsock, addr = serversock.accept()
> >              print 'connected from:', addr
> >              thread.start_new_thread(handler, (clientsock, addr))
> >
> >
> > --
> > _______________________________________________
> > Python中文技术讨论邮件列表
> > 发言: 发邮件到 python-chinese at lists.python.cn
> > 订阅: 发送 subscribe 到 python-chinese-request at lists.python.cn
> > 退订: 发送 unsubscribe 到  python-chinese-request at lists.python.cn
> > 详细说明: http://python.cn/mailman/listinfo/python-chinese
> > My webSite: http://www.scweb.cn
>
>
>
> --
> 张骏 <zhangj at foreseen-info.com>
>
> 敏捷来自Python
> 简单源于我们
> 丰元信信息技术有限公司
>
> Python技术交流群:22507237
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
_______________________________________________
Python中文技术讨论邮件列表
发言: 发邮件到 python-chinese at lists.python.cn
订阅: 发送 subscribe 到 python-chinese-request at lists.python.cn
退订: 发送 unsubscribe 到  python-chinese-request at lists.python.cn
详细说明: http://python.cn/mailman/listinfo/python-chinese
My webSite: http://www.scweb.cn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060719/2ab7e57f/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号