0
我想實現這樣的協議:Socket的輸入字節流包裝在兩種不同的流類型中?
Client side: 1) client sends command (String) 2) client sends object 3) client receives object or data [depends on command] Server side: 1) server reads command (String) 2) server receives object [type depends on command] 3) server sends object or data [depends on command]
在客戶端,我在做這樣的事情(在線程序塊,上面標有「!」):
/** Retrieves required wrapper streams */
private void getSocketStreams() {
try {
inputStream = new DataInputStream(
connection.getInputStream());
/* !!! here is a problem: can I do next line's stuff? */
inputObjectStream = new ObjectInputStream(
connection.getInputStream());
outputWriter = new BufferedWriter(
new OutputStreamWriter(
connection.getOutputStream()));
outputObjectStream = new ObjectOutputStream(
connection.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
/** "put" command processor */
private int processCmdPut(OrderInfo orderInfo) {
/* Send command to peer */
try {
outputWriter.write("put");
outputWriter.newLine();
outputWriter.flush();
} catch (IOException e) {
e.printStackTrace();
}
/* Send inserted object to peer */
sendObject(orderInfo);
/* Get from peer inserted info id */
int id = -1;
try {
id = inputStream.readInt();
} catch (IOException e) {
e.printStackTrace();
}
return id;
}
/**
* Sends object to peer.
* @param obj object to send.
*/
public void sendObject(Object obj){
try {
outputObjectStream.writeObject(obj);
outputObjectStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
服務器端操作鏡像客戶端。
有關線的問題,用「!!!」標記:是否可以用兩個不同的高槓杆流對套接字的字節流 進行包裝並逐個(逐個)讀/寫? 我錯了嗎?有我的錯誤或誤解?
謝謝,我想到了這一點,並認爲我會這樣做。 – Milkywayfarer 2010-09-20 13:22:45