2016-05-23 58 views
-2

當我試圖關閉偵聽器時出現java.net.BindException: Address already in use: JVM_Bind錯誤。這是我打開監聽器的代碼。java.net.BindException:地址已經在使用中:試圖關閉偵聽器時出現JVM_Bind錯誤

SMPPServerSessionListener sessionListener = new SMPPServerSessionListener(newPort); 

這裏是我的代碼關閉它。

public String getCloseConn() throws IOException{ 
    System.out.println("porttt: " + newPort); 
    SMPPServerSessionListener sess = new SMPPServerSessionListener(newPort); 
    sess.close(); 

    return ""; 
} 

我的程序做的是詢問用戶端口號並在提交時啓動它。然後,當用戶單擊觸發getClossConn()方法的「停止服務器」按鈕時,我試圖關閉監聽器,但是我收到了前面提到的錯誤。請幫助。 PS:請不要對我苛刻,我只是新來的:)

+2

你爲什麼試圖在close方法中打開一個新會話?如果服務器會話已經打開,並且您嘗試在同一個端口上打開另一個,則會看到您所看到的錯誤。 –

+1

@JimGarrison嗨,先生,你在談論這一行嗎? 'SMPPServerSessionListener sess = new SMPPServerSessionListener(newPort); '我想在這一行中我正在調用活動會話,然後用'sess.close()'關閉它。我做得不對嗎? – chiradee

+0

請參閱下面的答案 –

回答

0

你不應該叫

SMPPServerSessionListener sess = new SMPPServerSessionListener(newPort); 

期望得到現有的監聽器。該語句嘗試在與現有偵聽器相同的端口上創建一個NEW偵聽器,這會導致您看到的錯誤。

您應該將對現有會話的引用傳遞給close方法,並關閉而不是

+1

謝謝先生@JimGarrison。這對我來說很好。 :) – chiradee

相關問題