"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो टीसीपी सर्वर को शालीनता से कैसे बंद करें और `(*TCPListener) एक्सेप्ट` गोरआउटिन को कैसे बाधित करें?

गो टीसीपी सर्वर को शालीनता से कैसे बंद करें और `(*TCPListener) एक्सेप्ट` गोरआउटिन को कैसे बाधित करें?

2024-11-12 को प्रकाशित
ब्राउज़ करें:655

How to Gracefully Shut Down a Go TCP Server and Interrupt the `(*TCPListener) Accept` Goroutine?

गो-रूटीन निष्पादन में बाधा डालना (*TCPListener) स्वीकार करना

गो में एक टीसीपी सर्वर बनाते समय, आपको ग्रेसफुली की चुनौती का सामना करना पड़ सकता है सर्वर को बंद करना और गोरोइन हैंडलिंग func (*TCPListener) को बाधित करना स्वीकार करें।

गो में, func (*TCPListener) कनेक्शन प्राप्त होने तक निष्पादन को अवरुद्ध करता है। इस गोरआउटिन को बाधित करने के लिए, आपको यह करना चाहिए:

नेट बंद करें। श्रोता:

एक्सेप्ट गोरआउटिन को बाधित करने की कुंजी नेट को बंद करना है। नेट से प्राप्त श्रोता। सुनना(...)। श्रोता को बंद करके, आप ऑपरेटिंग सिस्टम को संकेत देते हैं कि कोई और कनेक्शन प्राप्त नहीं होगा, जिससे एक्सेप्ट गोरोइन बाहर निकल जाता है।

गोरआउटिन से वापसी:

बंद करने के बाद श्रोता, सुनिश्चित करें कि आपका गोरोइन वापस आ जाए। यदि गोरोइन के पास एक्सेप्ट कॉल के बाद कोड है, तो यह निष्पादित करना जारी रखेगा और अनपेक्षित व्यवहार या त्रुटियों का कारण बन सकता है।

उदाहरण कोड:

package main

import (
    "fmt"
    "net"
)

func main() {
    ln, err := net.Listen("tcp", ":8080")
    if err != nil {
        // Handle error
    }

    go func() {
        for {
            conn, err := ln.Accept()
            if err != nil {
                if err == net.ErrClosed {
                    return // Listener was closed
                }
                // Handle other errors
            }
            // Handle connection
            conn.Close()
        }
    }()

    fmt.Println("Press enter to stop...")
    var input string
    fmt.Scanln(&input)

    ln.Close() // Close the listener, interrupting the Accept loop
}

यह कोड पोर्ट 8080 पर एक टीसीपीलिस्टनर बनाता है और एक गोरोइन लॉन्च करता है जो अनंत लूप में आने वाले कनेक्शन को संभालता है। जब उपयोगकर्ता एंटर दबाता है, तो प्रोग्राम श्रोता को बंद कर देता है और ब्लॉकिंग एक्सेप्ट कॉल को बाधित कर देता है, जिससे गोरोइन वापस आ जाता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3