一、关于Socket
Socket简介
Socket是指套接字,是对网络中不同主机上的应用进程之间进行双向通信的端点的一种抽象。
一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。
Socket的主要类型
Socket主要有三种类型:流套接字、数据报套接字、原始套接字。
- 流套接字(SOCK_STREAM):采用了TCP协议,用于提供面向连接、可靠的数据传输服务。
- 数据报套接字(SOCK_DGRAM):采用了UDP协议,提供一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。
- 原始套接字(SOCK_RAW):与上面两种套接字的区别在于原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。
本文中讲的是采用TCP协议,即流套接字。
二、Python的socket模块
Python中进行网络编程的主要是使用socket模块,当然还有高级一点的网络服务模块SocketServer等内容。本文中主要使用的是socket模块。
socket模块中首先需要使用socket()方法创建套接字对象,代码示例如下:
s = socket.socket(socket.AF_INET, socket.S