Python socket 遇到錯誤 [Errno 10060] ?
我是根據socket文檔在伺服器端和客戶端分別寫了兩個腳本sevice.py和client.py。伺服器是採用的裝有centos6.6的虛擬機,客戶端是64位的win7的PC工作用電腦。
我的腳本是這樣的伺服器端:service.py
客戶端client.py
# -*- coding:utf-8 -*-
if __name__ == __main__:
import socket
socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
socket.bind((127.0.0.1,8001))
socket.listen(5)
while 1:
connection,address = socket.accept()
try:
connection.settimeout(5)
buf = connection.recv(1024)
if buf == 1:
connection.send(welcome to server!)
else:
connection.send(please go away !)
except socket.timeout:
print time out !
connection.close()
運行後出現Errno 10060百度了是連接超時,我的思路只能到這兒了。
# -*- coding:utf-8 -*-
if __name__ == __main__:
import socket
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((192.168.23.128,8001))
import time
time.sleep(2)
sock.send(1)
print sock.recv(1024)
sock.close()
Python 官方有一份 Python HOWTOs 文檔,介紹了一些常見的功能,其中就有 socket 編程相關的介紹:Socket Programming HOWTO。
在 serversocket bind 一個 address 的時候,推薦的寫法是:
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind((socket.gethostname(), 8080))
# do something
we used socket.gethostname() so that the socket would be visible to the outside world. If we had useds.bind((localhost, 80)) or s.bind((127.0.0.1, 80)) we would still have a 「server」 socket, but one that was only visible within the same machine. s.bind((, 80)) specifies that the socket is reachable by any address the machine happens to have.
- 僅限本機:「 localhost 」「 127.0.0.1 」(注意:本機通過區域網地址也不能訪問)
- 來者不拒:「空字元串」「 0.0.0.0 」
謝邀,
看了一下,題主你這不是對python不熟悉的問題,而是對127.0.0.1這個網路地址不太清晰的問題。話說,這個127.0.0.1一般默認作為loopback地址,也就是迴環地址使用。如果不是使用linux的話,確實不太容易明白這個東東。因為windows就不給你顯示這東西。詳細的看這個鏈接吧localhost、127.0.0.1 和 本機IP 三者的區別? - 計算機網路
小技巧:cmd-&>net helpmsg 錯誤編號由於沒有用過py,所以不能幫助你........
client里
-sock.connect((192.168.23.128,8001))
+sock.connect((localhost,8001))
考慮能不能ping通。
先用現成的工具測測這樣子能不能聯通,再去調試代碼。
推薦閱讀:
※Flask框架怎麼樣,比起Web.py有哪些不同?
※Tornado 非同步讀寫文件的方法?
※學完python之後去看《flask web開發-基於python的web應用開發實戰》為什麼看不懂?
※用Python寫爬蟲,用什麼方式、框架比較好?
※如何理解 CGI, WSGI?