तो मैं गो में अपने लिफ्ट के लिए एक सर्वर बना रहा हूं, और मैं एक "टीसीपी-कनेक्शन के साथ एक goroutine के रूप में" हैंडलर "समारोह चला रहा हूँ। मैं इसे किसी कनेक्शन से पढ़ना चाहता हूं, और यदि किसी निश्चित समय के भीतर कोई सिग्नल नहीं मिला है, तो मैं इसे एक त्रुटि वापस करना चाहता हूं।मैं नेट कैसे बना सकता हूं। गोलांग में इनपुट के लिए प्रतीक्षा करें?
func handler(conn net.Conn){
conn.SetReadTimeout(5e9)
for{
data := make([]byte, 512)
_,err := conn.Read(data)
}
}
जब तक ग्राहक त्रुटि EOF net.Read समारोह रिटर्न भेजने बंद हो जाता है और शुरू होता है कोई देरी से पाशन के रूप में मैं एक ग्राहक कनेक्शन यह ठीक काम कर रहा है से अधिक सामान भेजने, लेकिन जैसे ही है ।
यह हो सकता है कि रीड कैसे काम करना चाहिए, लेकिन क्या कोई समस्या को संभालने और कनेक्शन को खोलने के बिना समस्या को संभालने का एक और तरीका सुझा सकता है जब भी मैं कुछ पढ़ना चाहता हूं?
conn.SetReadTimeout (5e9) वह नहीं है जो आप चाहते हैं। SetReadTimeout एक पूर्ण समय की अपेक्षा करता है, एक अवधि नहीं। "Time.Seconds * 10" के रूप में निर्दिष्ट करने का प्रयास करें और संकलक शिकायत करेगा। आप ऊपर क्या कह रहे हैं कि आप 1 जनवरी 1 9 70 के बाद कनेक्शन को 5000 सेकेंड पर समय से बाहर करना चाहते हैं। तो यह बिल्कुल इंतजार नहीं करेगा। इसके बजाय आप दस सेकंड टाइमआउट के लिए conn.SetReadTimeout (time.अब() जोड़ें (समय। सेकंड * 10)) के प्रभाव के लिए कुछ चाहते हैं। – Crunge