2012-05-02 57 views
0

我有一個文件傳輸小程序,我在創建一個日誌系統,所以在它初始化的小程序,直到它發送文件和完成將開始打印日誌文件(最初它轉到客戶端的java控制檯),但現在我正在修改它,所以它會轉到服務器,而不是(在服務器中創建一個文件,並開始在文件上寫入)。java服務器發送printstream到端口80或443

它現在工作,我使用端口5000,但我需要打開端口5000的防火牆,因爲打開端口是危險的,我可以使用端口80或443(HTTPS),因爲它無論如何打開文件傳輸?怎麼做?此刻的代碼

例子是

在Java小程序會有

handler = new SocketHandler("xxx.xxx.xxx.xx", 5000); 
//on different area of the file there will be something like 
log("starting the applet"); 
log("sending email"); 
... 

而我創建這樣

public class ThreadedEchoServer { 
    // using port 5000 
    static final int PORT = 5000; 

    public static void main(String args[]) { 
     ServerSocket serverSocket = null; 
     Socket socket = null; 

     try { 
      serverSocket = new ServerSocket(PORT); 
     } catch (IOException e) { 
      e.printStackTrace(); 

     } 
     while (true) { 
      try { 
       socket = serverSocket.accept(); 
      } catch (IOException e) { 
       System.out.println("I/O error: " + e); 
      } 

      // new thread for a client 
      new EchoThread(socket).start(); 
     } 
    } 
} 
+0

你的錯誤是什麼?爲什麼不能在代碼中將5000到80的兩個實例都更改? –

+0

@KonstantinNaryshkin其實我不能只是將其更改爲端口80或443,當我嘗試運行我創建它的簡單java服務器時,將拋出java.net.BindException:已在使用的地址:JVM_Bind – Harts

+0

這個錯誤意味着你已經有一個服務器在該端口上運行(可能是一個Web服務器)。你可以讓os告訴你它是什麼(Linux上的'netstat -nap | grep':80「'),決定你是否需要保持服務器運行。如果你這樣做,選擇一個不同的端口。如果不這樣做,請關閉服務器,執行日誌記錄,然後在完成後重新啓動它。 –

回答

1

你真是一個簡單的Java服務器的服務器上不應該考慮使用端口80和443 - 這些端口用於接收連接。在其中一個端口上獲取連接後,請求實際上被重定向到另一個端口進行處理。因此,使用它們來寫入將阻止任何傳入的通信。

+0

幾件事情:1.我認爲他不會接受任何其他港口的連接。 2.如果他正在使用TCP(最有可能),那麼當他連接客戶端時,連接將自動移動到某個高數字端口並釋放80以接收新連接。 –

1

現在的工作,我使用的端口是5000,但我需要打開防火牆 端口5000開業以來端口是危險的,我可以只使用80端口 或443(HTTPS)?怎麼做?

打開端口5000不會比打開端口80或443更危險(更改端口不會比修改數字困難,並且沒有更多效果)。

+0

不,我的意思是,因爲端口80和443已經打開了..不應該只是使用該端口,因爲文件是通過該端口傳輸的。 – Harts

+0

如果您想要,如果您無法訪問防火牆。如果你控制防火牆,我會建議使用不同的端口來避免衝突(因爲這些端口通常用於HTTP和HTTPS)。 – erikxiv

相關問題