python中的网络编程

来源:互联网 发布:离线地图 知乎 编辑:程序博客网 时间:2024/06/06 04:05

Python的网络编程基于socket(套接字)

基本概念:socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

socket起源于Unix,而Unix/Linux基本哲学之一就是一切皆文件,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/IO、打开、关闭)

套接字:

面向连接:在通讯之前一定要建立一条连接,就像朋友打电话那样。这种方式被称为虚电路或流套接字。面向连接的通讯方式提供了顺序的、可靠的、不会重复的数据传输,而且不会被加上数据边界,就意味着每一个要发送的信息,可能会被拆分成多份,每一分都会不多不少的正确到达目的地,然后被重新按顺序组装起来,传给正在等待的应用程序。

实现面向连接套接字的主要协议是tcp【传输控制协议】,要创建tcp套接就得的在创建的时候指定套接字类型为SOCK_STREAM.由于这种套接字使用ip来查找网络中的主机,一般会有两个协议(TCP/IP)名的组合来描述。

无连接:与流套接字(虚电路)相反的就是数据报型的无连接套接字。这意味着无需建立连接即可进行通讯。但数据的到达顺序、可靠性以及不重复性就无法保证了。数据报会保留数据边界,即数据是整个发送的。例如快递发送。

无连接的套接字使用的协议主要是udp(用户数据报协议),要创建无连接套接字就要指定套接字类型为sock_DGRAM(DGRAM---datagram--用户数据报)。同样使用ip来进行主机查找,组合名叫udp/ip.

Socket()模块函数:

Socket.socket():语法--socket(socket_family,socjet_type,protocol=0)

Socket_family:AF_UNIXAF_INET

Socket_type:scoket_stream/socket_dgram[流套接字、无连接套接字]

Protocol一般不填,默认为0

创建一个tcp套接字:tcpsock= socket.socket(socket.AF_INET,socket.sock_stream)

创建一个udp套接字:udpsock= socket.socket(socket.AF_INET,socket.sock_dgram)