对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。

 

 

代码意思if __name__ == '__main__':是主文件的话就先执行main函数,main函数里面的意思先创建一个socket服务端的对象,sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)的意思是什么意思呢,那得先理解一下什么是地址簇和类型 :地址簇分别是socket.AF_INET是IPv4(默认一般都是这个啊)  而socket.AF_INET6是IPv6 ,socket.AF_UNIX 只能够用于单一的Unix系统进程间通信 而类型分别有socket.SOCK_STREAM,它代表流式socket , for TCP (默认是这个),socket.SOCK_DGRAM   是指数据报式socket , for UDP;  然后sock.bind('localhost',8080)就是将套接字绑定到地址,也可以理解成是监听本地的8080端口,而address地址的格式取决于地址族,在AF_INET下,就是以元组的形式表示地址,其实还有一个是第3类型,就是直接写0就好了,他就会默认与特定的地址家族相关的协议,如果是 0 ,则系统就会根据地址格式和套接类别,自动选择一个合适的协议;sock.losten(5)是监听传入连接,括号里面是设置最大的接收的连接数多少,这个是5个,一般也是5就好,然后connection, address = sock.accept()意思是如果没有客户端来请求的话,代码的程序就停在这里了,不走了,而connection就是客户端的对象,address的是客户端的地址,等于sock.accept(),就是等于服务器的话,接收并且返回,就继续往下走,专业点说就是接收TCP客户的链接(阻塞式)等待连接的到来;然后send可以简单理解成是是发送数据,recv是接收数据,然后就handle_request(connection)是执行客户端发来的信息,然后再继续回到main函数,关闭掉。

 

posted on 2017-02-27 16:06  期待某一天  阅读(247)  评论(0编辑  收藏  举报