単一プロセス単一スレッド、同時サーバの完了(ベース版)
2435 ワード
# ,
from socket import *
def main():
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(("", 7788))
serverSocket.listen(5)
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(1024)
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