我的服務器套接字有問題。我正在製作一個Web服務器並嘗試從瀏覽器中填寫。表單HTML腳本如下所示:收到POST HTTP請求後'資源暫時不可用' - Python
<html>
<body bgcolor = black text= white>
<FORM method="post" action="/processData.py">
<P>
<LABEL for="firstname">First name: </LABEL>
<INPUT type="text" id="firstname"><BR>
<LABEL for="lastname">Last name: </LABEL>
<INPUT type="text" id="lastname"><BR>
<LABEL for="email">email: </LABEL>
<INPUT type="text" id="email"><BR>
<INPUT type="radio" name="sex" value="Male"> Male<BR>
<INPUT type="radio" name="sex" value="Female"> Female<BR>
<INPUT type="submit" value="Send"> <INPUT type="reset">
</P>
</FORM>
</body>
</html>
我試圖打印時POST請求從瀏覽器擊中後把我的終端在整個請求「提交」。當我在Web服務器上收到POST請求時,套接字會拋出'[Errno 35]資源暫時不可用'。我不關閉連接或任何東西,但不知何故我失去了連接。這裏是我在Python中使用的代碼來獲取POST。
while not recvIsComplete:
rcvdStr = fd.recv(1024)
if rcvdStr[0:3] == "GET":
toGET()
elif rcvdStr[0:4] == "POST":
print rcvdStr
任何想法是怎麼回事?
我們需要了解更多關於您如何「製作Web服務器」的信息。但是,通常情況下,當您嘗試從非阻塞套接字讀取但沒有要讀取的數據時,您會得到errno 35('EAGAIN')。 (這有點令人困惑,因爲在大多數POSIX平臺上,'EWOULDBLOCK:Operation會阻止'和'EAGAIN:Resource暫時可用'是同一個errno。) – abarnert
另外,我可以猜測錯誤正在'rcvdStr = fd.recv(1024)',以及回溯說的是什麼......但向我們展示是很好的,所以我們不必猜測。 – abarnert
另外,您可能需要檢查「EAGAIN」和「EWOULDBLOCK」是否在您的平臺上。 (如果你在Windows上,不要試圖回答這個問題,只是說「我在Windows上」。) – abarnert