我正在嘗試將此從Ruby轉換爲Python。 Ruby代碼:Python套接字超時和刷新
def read_byte
begin
Timeout.timeout(0.5) do
b = socket.read 1
end
rescue Timeout::Error => e
socket.write("\n")
socket.flush
retry
end
end
def socket
@socket ||= TCPSocket.open @host, @port
rescue SocketError
# TODO: raise a specific error
raise "Unable to open connection to #{@host} with given parameters"
end
我這裏指的問題是與
socket.flush
我不能找到一種方法做齊平。我可以用其他方式做到這一點? 我寫了這個。 Python代碼:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((self.host, self.port))
s.settimeout(0.5)
while True:
try:
print s.recv(1)
except socket.timeout:
s.sendall("\n")
你會期望沖洗套接字來執行'sendall()'dosen't已經做了什麼? – kindall
流是有點掛在我的代碼。它正在使用Ruby代碼。 –