Re: [問題] socket寫活的
※ 引述《dremel (hadoop)》之銘言:
: 小弟初學,已下請教
: 這是我找到的code
: http://ideone.com/9lHhTM FileClient
: http://ideone.com/OmpTun FileServer
: 這支code執行順序方式:
: (test.jpg在FileClient所屬目錄)
: 1. java FileServer test.jpg
: 2. java FileClient test.jpg
: 結果:FileClient將檔案傳到FileServer端
: 我想做的是假設我從資料庫查到一筆資料,叫tom.jpg
: 已抓到tom.jpg字串
: 我將tom.jpg存放在字串String tom裡面
: 那我要如何讓我上面那兩隻socket code
: 根據我從資料庫所找到的tom變數傳輸tom.jpg檔!!!
: 也就是我要將上面兩隻程式碼改成活的!!!
: 問題在於不需要使用者在java執行後面還要加檔名
: 而且這兩隻程式目前再傳檔案前,
: 都還必須server端執行前加檔名(此時連結中)
: >然後client端執行加檔名>server端才收到檔案。
: 所以我要如何讓client端抓到tom變數然後在複製tom.jpg
: 將tom.jpg傳到server端??(不需要使用者在執行過程中輸入檔名)
: 請問要怎麼改寫?
: 麻煩大大解惑
方法1: 學FTP的做法
一條連線專門用來下指令的
檔名之類的從指令連線去收發
然後當你收到傳輸檔案的指令時,再開另外一條連線去收發檔案
方法2: 自訂通訊協議
基本上,兩邊的
socket.getInputStream()
socket.getOutputStream()
是互相對應的,一邊的Input送出去的東西另外一邊的Output會收到
至於送的是什麼東西,很純粹的是看你的格式怎麼定
自己訂個方法,讓另外一邊收到那串指令時知道該做什麼事就好了
我比較建議用這種方法
因為花多一點的時間把工具寫好後,未來寫到網路連線時會比較舒服
方法3: 如果你要交作業的話....
在剛建立連線的時候,你先傳一行
test.jpg
過去
我記得 InputStream 跟 OutputStream 有個子類別
是可以用ReadLine Write 之類的方法
先用那個把檔名送過去就是了
收到檔名之後,再依照範例那樣把檔案傳輸過去
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.38.69.229
推
11/18 15:56, , 1F
11/18 15:56, 1F
→
11/18 20:20, , 2F
11/18 20:20, 2F
討論串 (同標題文章)