導航:首頁 > 編程語言 > socket數組java

socket數組java

發布時間:2023-10-27 22:45:52

java中的socket通信,怎麼發送一個byte[]數組

socket發送的是流,所以必須將byte[]轉換成流的形式,之後才可以發送的。創建socket後可以通過下面的方法實現發送:
PrintWriter pw = null;
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()))); //創建一個輸入流,之後這個流的指向是socket
pw.write(request.toString()); //寫入要輸入的Byte[],轉換為字元串,之後進行傳送
pw.close();//傳送完畢,關閉流

㈡ 關羽java的socket傳輸字元串數組問題

給你一段代碼,不知道能不能解決你的問題
可以直接傳字元串,也可以將字元串數組封裝對象進行傳輸。
服務端代碼:
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {
public static void main(String[] args) throws Exception{
ServerSocket ss = new ServerSocket(9091);
Socket s = ss.accept();
System.out.println("new connection");
ObjectInputStream oi = new ObjectInputStream(s.getInputStream());
String [] arr = (String[]) oi.readObject();
System.out.println(arr[0] + arr[1]);
}
}
客戶端代碼:
import java.io.ObjectOutputStream;
import java.net.Socket;

public class Mysocket {
public static void main(String[] args) throws Exception {
Socket s = new Socket("localhost",9091);
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
out.writeObject(new String[]{"123","232"});
out.flush();
out.close();
}
}

㈢ 請教大家JAVA——socket接收的數據(byte[])的處理

接收方法的問題

如果你發送一個長度11的字元串 而用一個長度為8的數組接收
第一次read沒問題 但第二次read時因為只接受了3個字元 而數組長度卻是8.結果就是除了前3個字元外剩下全部都是0 就出現了你的問題。

byte[] b = {0x11,0x22,0x33, 0x00, 0x00, 0x00, 0x00...}; -->length = 1024 後面都是0x00
就是因為隱唯態只接受了前3個字元 後邊數組實例的時候本身就是0
解決方法也比較容易
read(byte[] b)方法提供了一個返回的整數灶源用來山肢表示接受了多少個字元。
只要每次read時判斷下看看返回的數值和數組長度大小。如果接收小於數組長度在處理處理數據時把多餘的數據去掉。

閱讀全文

與socket數組java相關的資料

熱點內容
一個普通程序員能幹多久 瀏覽:934
adobe的PDF轉換器 瀏覽:853
單片機數字碼表匯編 瀏覽:477
單片機開發用的軟體 瀏覽:151
程序員8個演算法題 瀏覽:401
php題庫系統 瀏覽:221
王牌戰爭文明重啟選什麼伺服器 瀏覽:653
簡述對稱加密法 瀏覽:658
c語言數學編程 瀏覽:990
F1B命令 瀏覽:630
cs命令快捷鍵 瀏覽:852
阿里雲購買伺服器如何用現金支付 瀏覽:691
pythontime等待 瀏覽:988
單片機串列通信方式 瀏覽:498
android表格demo 瀏覽:278
安卓怎麼讓相冊不顯示網頁 瀏覽:314
php文件系統源碼 瀏覽:727
易信java 瀏覽:501
北侖二級壓縮螺桿機 瀏覽:63
加密路線免費入口 瀏覽:759