2013-01-20 78 views
3

具有打開一個Python程序UDP套接字關閉UDP套接字沒有socket.close()

receiveSock = socket(AF_INET, SOCK_DGRAM) 
receiveSock.bind(("", portReceive)) 

它有時會發生程序失敗或終止我在它運行的時候,並沒有達到到

receiveSock.close() 

所以,在接下來的時間我試圖運行這個程序,我得到

receiveSock.bind(("",portReceive)) 
    File "<string>", line 1, in bind 
socket.error: [Errno 98] Address already in use 

如何使用shell命令(或任何其他有用的想法)關閉此套接字?

回答

4

你有兩個選擇:

try: 
    # your socket operations 
finally: 
    # close your socket 

或者,爲Python的新版本:

with open_the_socket() as the_socket: 
    # do stuff with the_socket 

with statement將關閉塊時完成了插座,或退出程序。

+0

我想到了'finally',但是在中斷關閉('crl + Z')時它並沒有進入到'finally'。 – URL87

+1

'CTRL + Z'暫停UNIX/Linux中的任務;所以你不會期望套接字被關閉。 –

+0

'CTRL + C'也不會進入'finally'。 – URL87

相關問題