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

熱點內容
銀行人員如何解壓 瀏覽:829
newfile命令快捷鍵 瀏覽:567
阿里雲物理伺服器 瀏覽:953
靈狐視頻app哪個好 瀏覽:257
大廠退役程序員自述 瀏覽:252
linux命令watch 瀏覽:889
加密幣哪些平台不撤出中國 瀏覽:553
max加線命令 瀏覽:424
app胖瘦模式哪個好用 瀏覽:724
可以下載源碼的軟體 瀏覽:487
程序員寫一天代碼累嗎 瀏覽:628
ie文件夾禁止訪問 瀏覽:545
百川互聯網程序員 瀏覽:785
linuxpython解釋器 瀏覽:669
興安得力軟體加密狗 瀏覽:494
智能網路攝像頭加密 瀏覽:575
軟體畢業程序員培訓 瀏覽:654
安卓陀螺儀低怎麼辦 瀏覽:248
一級建造師復習題集pdf 瀏覽:905
法理學pdf海默 瀏覽:394