我正在尝试使用Python 3.5.2上的套接字编程创建一个简单的多客户端服务器架构。这是我创建服务器客户端程序的第一次体验。这是一个测验程序,通过浏览器使用HTML文件向客户端询问每个问题,并将答案发送回服务器以计算客户点数。为了将客户端连接到托管HTML文件和客户端结果的Web服务器,我使用中间服务器充当客户端和Web服务器之间的桥梁。为清晰起见,您可以看到下图:
我使用非常简单的HTML文件来解决以下问题:
<html>
<head>
<title>Quiz</title>
</head>
<body>
<h1>Question 1</h1>
<p>Which of the followings is the 45th elect president of the United States?
<form action="/Question_2.html" method="post">
<input type="radio" name="answer" value="trump">Donald J. Trump<br>
<input type="radio" name="answer" value="clinton">Hillary Clinton<br>
<input type="radio" name="answer" value="obama">Barrack Obama
<br><br>
<button type="submit">Submit</button>
</form>
</body>
</html>
当客户选择答案并提交时,答案将发送到Web服务器,下一个问题将显示在同一浏览器选项卡上。现在,问题在于每次为新问题打开新的浏览器窗口时,自然会创建一个新的套接字并连接到多路复用服务器。以下代码来自MultiplexingServer.py:
MultiplexingServerName = 'localhost'
MultiplexingServerPort=12000
MultiplexingServerSocket = socket(AF_INET,SOCK_STREAM)
MultiplexingServerSocket.bind((MultiplexingServerName, MultiplexingServerPort))
MultiplexingServerSocket.listen(1)
while True:
print ('Ready to serve on port' ,MultiplexingServerPort)
ConnectionSocket, address = MultiplexingServerSocket.accept()
例如,当我打开浏览器并输入URL“http://localhost:12000/Question_1.html”时,我连接没有问题,我可以继续处理下一个问题并将答案发送到Web服务器。但是,由于新页面意味着新的套接字和地址,因此我在Web服务器上获得输出,例如:
Message recieved from multiplexer server: 2,trump,127.0.0.1:58594
Given answer: trump
Message recieved from multiplexer server: 3,staryu,127.0.0.1:58596
Given answer: staryu
Message recieved from multiplexer server: 4,oak,127.0.0.1:58598
Given answer: oak
Message recieved from multiplexer server: 5,rengar,127.0.0.1:58600
Given answer: rengar
我如何区分这些答案是从同一个人那里得到的,因为新的套接字被创建并且每个新问题(页面)的地址都在变化?我可以使用什么样的解决方法?