當我們使用udp來進行網絡通信時,有時候我們會遇到數據加類型的傳輸,這時候我們就要考慮使用io中ByteArrayOutputStream和DataOutputStream等。好了,直接上代碼吧。
/**
* 客戶端
*
*
*/
public class Myclient1 {
public static void main(String[] args) throws IOException {
//創建客戶端
DatagramSocket client=new DatagramSocket(6666);
//定義要發送的數據
double f=19.28;
//傳化為字節數組
byte[] revert = revert(f);
//封裝數據
DatagramPacket data=new DatagramPacket(revert, revert.length, new InetSocketAddress("localhost", 8888));
//封裝數據
client.send(data);
//釋放資源
client.close();
}
public static byte[] revert(double f) throws IOException{
//字節數組流 新方法不能用多態
ByteArrayOutputStream out=new ByteArrayOutputStream();
//從內存中把數據寫入到程序中 所以為數據輸出流
DataOutputStream dOut=new DataOutputStream(out);
byte[] b=null;
dOut.writeDouble(f);
//傳化為字節數組
b=out.toByteArray();
return b;
}
}
/**
* 服務端
* @author luoliang
*
*/
public class MyServer1 {
public static void main(String[] args) throws IOException {
//創建DatagramSocket 對象 服務端
DatagramSocket server=new DatagramSocket(8888);
byte[] b=new byte[1024];
//封裝DatagramPacket
DatagramPacket data=new DatagramPacket(b,b.length);
server.receive(data);
//封裝數據轉換為data2
byte[] data2 = data.getData();
//把數據寫到內存中
DataInputStream in=new DataInputStream(new ByteArrayInputStream(data2));
double data1 = in.readDouble();
System.out.println(data1);
//釋放資源
server.close();
}
}
