2015-05-06 256 views
-1

我連接了服務器,但我不太瞭解TCP如何完美地完成任務。我想在開始編寫內容之前發送文件名,但是如何從內容中單獨讀取文件名。這對於使用socket.receive(packet)的UDP來說非常簡單,但我無法想象使用TCP套接字做這種做法。通過TCP/SSL套接字發送內容之前發送/接收文件名

+0

http://stackoverflow.com/questions/10367698/java-multiple-file-transfer-over-socket的可能的複製。 – EJP

回答

1

你有兩種選擇,具體取決於您的協議的設計:

  1. 發送文件名長度爲固定大小的整數,然後發送實際文件名。然後接收器可以首先讀取長度,然後讀取它指示讀取文件名的多個字節。

    <length><filename><file data> 
    
  2. 發送文件名,然後發送一個唯一的分隔符,如CRLF。接收器可以繼續閱讀直到遇到分隔符。

    <filename><delimiter><file data> 
    
1

使用固定的字節數寫入文件名的長度。然後編寫文件名。

在接收端,讀取文件名的長度,然後知道長度後,讀取文件名。