[英]Java Sockets - Sending data from client to server
我的目標是:將本地變量從客戶端程序發送到服務器程序。
我已經連接了客戶端和服務器,並且我知道如何將字符串消息從客戶端發送到服務器。
例:
private void sendToServer(Socket clientSocket) throws IOException{
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
writer.write("You have connected to the server.");
writer.flush();
writer.close();
}
上面的代碼可以正常工作並發送一條消息。
但是,如果我想在客戶端和服務器之間發送數據/變量,該怎么辦?
例如,如果我有一個變量float a = 0.5
或一個2d整數數組,等等。如何將其從客戶端發送到服務器,反之亦然?
例如,我嘗試僅使用writer.write(a)
做同樣的事情,但是writer.write()
的輸入是有限的,所以我覺得我的方法不正確。
如果除了使用BufferedReaders&BufferedWriters之外,還有其他更好的方法可以嘗試發送變量,您能告訴我嗎?
謝謝!
在處理Java客戶端/服務器通信時,如果您對兩端具有完全控制權,並且不希望更改設計,則可以通過Object * Stream類使用Java序列化直接直接執行編碼。
例:
ObjectOutputStream output = new ObjectOutputStream(bufferedSocketStream);
output.writeInt(42); // Write a primitive integer
output.writeObject("Hello World"); // Write a string as an object
output.writeObject(myClass); // Write a class instance that you've implemented the "Serialize" interface
output.flush();
/* INPUT */
ObjectInputStream inputStream = new ObjectInputStream(bis);
int value = inputStream.readInt(); // Will receive 42
Object value2 = inputStream.readObject(); // Will receive "Hello World"
Object value3 = inputStream.readObject(); // Will receive your serialized class instance
(請參見https://docs.oracle.com/javase/8/docs/api/java/io/ObjectOutputStream.html和https://docs.oracle.com/javase/8/docs/api/java/io/ ObjectInputStream.html )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.