2012-03-28 127 views
0

我需要一個Java程序從Web服務器下載一系列文件,我需要關閉然後重新打開每個文件下載之間的tcp/ip連接。Java關閉TCP/IP連接

不知道如何做到這一點。

+0

[你有什麼試過?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – 2012-03-29 06:04:14

回答

1

這裏不僅從插座80獲取任何信息(HTTP),但一般以檢索郵件的一個低級別的方式,做一個用「telnet」等:

socket = new Socket(); 
socket.connect(new InetSocketAddress(host, port)); 
reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 

現在做一個調用來檢索一個頁面,發送get命令,設置內容類型,併發送兩個'\ n'。

有一個更高層次的解決方案: Send HTTP GET request with header

+0

謝謝。這就是我要找的。欣賞快速響應。 – BourneAgain 2012-03-29 14:59:41

+0

只是後續問題。一旦我關閉套接字,並嘗試再次使用它(socket.connect(new InetSocketAddress(host,80));)我收到一個java.net.SocketException:Socket是關閉錯誤。我似乎無法重新打開它。所以我只是聲明套接字套接字=新的套接字();套接字套接字=新的套接字(),等等...有多少文件,我在代碼中獲得。這是正確的方式,還是我可以重新打開我關閉的套接字? – BourneAgain 2012-03-29 15:05:01

+0

自從我編寫這樣的代碼已經有一段時間了,但從我記憶中,這段代碼的意圖是進行無狀態調用(即獲取數據,然後關閉流和套接字)並結束程序(我遺漏了)。要進行多次http調用,您可以創建一個套接字對象,以及2.一個InetSocketAddress對象。然後,對於每次調用,只需修改InetSocketAddress的字段(通過調用其上的某些set方法),創建一個新的讀寫器,獲取頁面,然後執行close語句。 – SunKing2 2012-03-29 22:59:38

0

您可以創建要發送到,然後使用FileInputStream文件讀入到一個字節數組和發送的字節數組通過DataOutPutStream的IP和端口,然後做的時候只是沖洗DataOutputStream類和關閉Socket Socket再次調用函數發送下一個文件。

0

使用邏輯: 請張貼的東西,你都試過了。

do{ 
     connection.open; 
     while(!eof){ 
     fetchfiles(); 
     } 
    connection.close; 
    }while(no of files yet to download);