# 單程序單線程,完成并發伺服器
from socket import *
def main():
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(("", ))
serverSocket.listen()
serverSocket.setblocking(False)
clientServerList = []
while True:
try:
clientServer, clientAddr = serverSocket.accept()
except Exception as e:
pass
else:
clientServer.setblocking(False)
print("用戶端:%s已連接配接" % str(clientAddr))
clientServerList.append((clientServer, clientAddr))
for clientServer, clientAddr in clientServerList:
try:
recvData = clientServer.recv()
except Exception as e:
pass
else:
if recvData:
print("%s:%s" % (str(clientAddr), recvData))
else:
clientServer.close()
print("%s斷開連接配接" % str(clientAddr))
clientServerList.remove((clientServer, clientAddr))
if __name__ == '__main__':
main()
基礎的版本,主要了解利用非堵塞的socket通信,非堵塞+for循環模拟多線程
注:
測試使用網絡調試工具就可以,這個可以多開。
代碼&工具下載下傳位址:
下載下傳位址1
下載下傳位址2