为了详细讲解 “Python Socket 服务常用操作代码实例”,我们将会分以下几个方面来进行讲解:
- 什么是 Socket?
- Python 中 Socket 操作的常用流程
- Python 中 Socket 常用操作的代码实例
什么是 Socket?
Socket(套接字)是指操作系统提供的用于网络通信的一种机制。通过 Socket,整个网络通信过程变得更加方便快捷。通俗来说Socket就是一种套路,让计算机之间可以通过互联网进行通信。
Socket 是应用层和传输层之间的门户,提供了 TCP/IP 协议族应用层和传输层之间的通信。Socket 本质上只是一个头文件,数据结构体,以及应用程序调用返回值等操作方式的抽象封装而已。
我们称通信的一端为一条 Socket。这条 Socket 由 IP 地址和 Port 端口号唯一确定。
Python 中 Socket 操作的常用流程
在 Python 中进行 Socket 操作是非常方便的。其常用流程如下:
- 创建套接字对象:
- socket.socket(AddressFamily, Type):创建数据流套接字。
- 绑定套接字到本地 IP 和端口:
- server.bind((address, port)):将套解字绑定到地址。address 为要绑定的IP地址,port 为端口号。
- 开始监听链接:
- server.listen(backlog):开始监听链接。backlog 为 未接受的最大连接数,一般设置为 5 即可。
- 接受客户端请求:
- clientsocket, clientaddress = server.accept():接受请求,并根据请求返回返回客户端端口号和地址。
- 进行通信:
- clientsocket.send(Msg):发送消息给客户端。
- clientsocket.recv(Bufsize):接收客户端发来的消息。bufsize 为一次接受消息的最大字符数。
Python 中 Socket 常用操作的代码实例
下面我们以两条示例来说明 Python 中 Socket 的常用操作代码:
示例一:HTTP Server
import socket
def start_server():
"""启动Http服务器"""
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口
server_socket.bind(('localhost', 8000))
# 设置监听数量
server_socket.listen(5)
while True:
print('start listen')
# 等待连接请求
(client_socket, client_address) = server_socket.accept()
print(f'client address is {client_address}')
# 获取请求内容
request_data = client_socket.recv(1024*1024)
print(f'request data is {request_data}')
# 构造响应数据
response_start_line = 'HTTP/1.1 200 OK\r\n'
response_headers = 'Server: myserver\r\n'
response_body = 'hello world'
response_data = (response_start_line + response_headers + '\r\n' + response_body).encode('utf-8')
# 发送响应数据
client_socket.send(response_data)
# 关闭socket
client_socket.close()
if __name__ == '__main__':
start_server()
这个示例是一个简单的Http服务器,通过将代码放在一个循环中可以不断监听客户端的请求,收到请求后,根据Http协议的格式构造并返回响应数据。
示例二:TCP Client
import socket
def start_client():
"""启动TCP客户端"""
# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接远程IP地址和端口
client_socket.connect(('localhost', 8000))
# 发送数据
client_socket.send('hello, server'.encode('utf-8'))
# 接收数据
response_data = client_socket.recv(1024*1024)
print(f'resopnse data is {response_data}')
# 关闭socket
client_socket.close()
if __name__ == '__main__':
start_client()
这个示例是一个简单的Tcp客户端,通过创建一个socket对象,连接服务器的Ip地址和端口,发送数据并接收响应数据,最后关闭socket的方式,实现Tcp通信。
以上就是关于 “Python Socket 服务常用操作代码实例”的详细攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python socket服务常用操作代码实例 - Python技术站