一、引言
最近在工作中使用 Python 写了一个测试用的小工具,大概作用是这样的:
这个小工具作为一个服务端,对客户端发起的请求信息,做一些处理,然后将返回的报文同步或者异步的返回回去。
对于这个小工具来说,其主要作为被请求服务的服务端进行工作。而在这个小工具的开发过程中,我经常会遇到诸如 Python Socket 编程的 [WinError XXXXX]
之类的错误。
遇到的多了,我发现,与其遇到一个 WinError 错误然后去搜索原因,不如我们自己写一个简单的基于 TCP 的服务端客户端通信程序,来自己把这些 WinError 错误的情况给模拟出来,这样,我们也会对这些 WinError 错误有更加深刻的理解。
说做就做,先上一份最简单的使用 Python Socket 编程实现的的服务端客户端通信程序。然后,我们在这份代码基础上,进行各种操作,去模拟实现一些常见的 WinError 错误。
二、C&S 代码
这里,直接上代码吧:
1. 代码
服务端程序
"""
Client side
Author: Wang Ying
Last modified: July 30 2019
"""
from socket import socket, AF_INET, SOCK_STREAM
# Create socket
tcpSerSocket = socket(AF_INET, SOCK_STREAM)
# Bind ip & port
address = ('127.0.0.1', 9999)
tcpSerSocket.bind(address)
# Begin listen
tcpSerSocket.listen(5)
while True:
# Receive client's connect, newSocket is served for client.
# tcpSerSocket wait for another client's connect.
newSocket, clientAddr = tcpSerSocket.accept()