簡體   English   中英

Java套接字-從客戶端向服務器發送數據

[英]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.htmlhttps://docs.oracle.com/javase/8/docs/api/java/io/ ObjectInputStream.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM