2015-02-11 53 views
0

我試圖做一個客戶端/套接字程序,涉及從客戶端發送一個字符串(以確定應該使用哪個鍵)到服務器,服務器發回一個以字節形式輸入密鑰,然後客戶端以字符串形式發送文件請求,服務器將請求的文件發送給用戶,用戶可以用它們解密密鑰。 我理解密碼學方面,我掛在如何區分發送字節,字符串或文件到服務器和從服務器。我知道如何發送單個流(字節,字符串或文件),但無法找到一種方法將所有這些流發送到一個流中,如果這有意義的話? 每次我想發送一個字符串,然後一個新的發送字節,然後一個新的發送文件,我必須創建一個新的流或套接字連接嗎?如何通過套接字連接發送不同的數據類型

我可能會查找的任何資源?乾杯!

+0

http://stackoverflow.com/questions/26830233/send-multiple-data-type-over-socket – Mudit 2015-02-11 21:26:59

回答

2

基本上,通過套接字連接發送的是一串字節。這可以表示一個字符串,字符或一串字符串..等等。

如果你想在一個數據包中發送全部數據,你需要爲每種類型的數據結構指定長度,即字符串最大爲1024個字節,字節最大爲512個字節......等等這樣做將使您能夠解密接收端的信息。

如果您沒有最大大小並且不想設置它們,那麼您可以採取不同的方法並將每個數據結構發送到它自己的數據包中。如果你採用這個路由,你需要指定數據包的第一個字節來標記接收方是什麼類型的數據;即1 =字節,2 =字符串,3 =陣列等

+0

我相信數據包是抽象的,不一定說你想要在自己的數據包中發送數據結構,而只需要通過連線發送X字節的數據,並讓TCP/IP堆棧處理數據包組塊。我可能在這個問題上是錯誤的,因爲這只是C socket的工作原理,這是一個Java問題。 – JNYRanger 2015-02-11 21:32:08

+0

我正在給予高層次的細分。在連線上,TCP/UDP和IP通常會將數據包和其他東西一樣分段。不過,從端到端的角度來看,如果@Java Noob不喜歡我的第一個建議,我說他可以分別發送每一條數據,併爲這些數據添加一個標誌字節。 – 2015-02-11 21:35:42

+0

我明白你的意思了。你已經得到了我的贊同,但只是想確保OP不會因爲處理包大小而感到困惑 – JNYRanger 2015-02-11 21:39:09

相關問題