導航:首頁 > 編程語言 > 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相關的資料

熱點內容
java列出所有文件 瀏覽:865
壓縮包看圖軟體 瀏覽:186
sqlite在android中的應用 瀏覽:656
一本通pdf 瀏覽:910
2021免費的編程軟體 瀏覽:123
項目編譯後瀏覽器不對應刷新 瀏覽:564
三星升級android60 瀏覽:292
粘土的壓縮模量 瀏覽:115
美國程序員生活 瀏覽:219
51單片機摘要 瀏覽:405
英語經典pdf下載 瀏覽:317
大學文件夾怎麼刪除 瀏覽:668
linux科研軟體 瀏覽:553
ue4打包編譯著色器 瀏覽:775
雲伺服器可以在手機上登錄嗎 瀏覽:677
網游腳本為什麼要連接伺服器 瀏覽:9
程序員發展路線圖 瀏覽:320
手機語音加密會議 瀏覽:592
冰與火pdf 瀏覽:421
為什麼叫我買阿里雲伺服器 瀏覽:475