python socket编程心得

这两天试了下python的socket编程,写了个基于命令行的简单聊天室功能,记录下心得:

1)网上的python socket编程的例子过于简单了,其实实现不了“多个终端”的socket服务,socket不论建立连接,还是连接之后监听消息、发送消息都是阻塞状态的,所以为了实现多个终端的socket服务需要使用多线程,一个终端对应一个线程;

2)python socket的api非常底层,它实现不了“事件驱动”,不能像html5的接口那么简单,只简单地监听下onmessage就可以了,它需要使用一个while True不停地循环,用这种循环实现“监听”;

3)python socket的api只提供了非常底层的功能,所以如果想要实现一个聊天室,每个终端发送消息出去,其它聊天室中的终端都可以收到消息,需要自己实现一个观察者模式,这个python socket并没有封装,需要我们自己来做这个工作;

4) 如果在内网起一个socket server,在内网中其他电脑可以使用192.168.x.x的内网地址连上server,但如果在外网想访问内网的server,用外网地址是没法直接连上server的,因为server在内网中,而内网的诸多电脑使用的是同一个公网地址,所以会找不到socket server(其它服务例如http服务、ftp服务亦然),需要在路由器上设置一个端口映射,这样就可以顺利连内网server了。

posted on 2010-11-07 22:38  真阿当  阅读(201)  评论(0编辑  收藏  举报