0
我已經編寫了用於客戶端和服務器之間的音頻文件(mp3)傳輸的代碼。第一個服務器啓動並等待數據包分組接收,然後客戶端啓動並向服務器發送UDP數據報分組。在JAVA中使用UDP的音頻文件傳輸
\服務器
serverSocket = new DatagramSocket(4000);
int packetsize=1024;
FileOutputStream fos = null;
try {
fos = new FileOutputStream("zz.wav");
BufferedOutputStream bos = new BufferedOutputStream(fos);
double nosofpackets=Math.ceil(((int) (new File("F:\\nirmal\\1.wav")).length())/packetsize);
byte[] mybytearray = new byte[packetsize];
DatagramPacket receivePacket = new DatagramPacket(mybytearray,mybytearray.length);
System.out.println(nosofpackets+" "+mybytearray+" "+ packetsize);
for(double i=0;i<nosofpackets+1;i++)
{
serverSocket.receive(receivePacket);
byte audioData[] = receivePacket.getData();
System.out.println("Packet:"+(i+1));
bos.write(audioData, 0,audioData.length);
}
\客戶
File myFile = new File("F:\\nirmal\\1.wav");
DatagramSocket ds=new DatagramSocket(9000);
DatagramPacket dp;
int packetsize=1024;
double nosofpackets;
noofpackets= =Math.ceil(((int) myFile.length())/packetsize);
BufferedInputStream bis;
bis = new BufferedInputStream(new= FileInputStream(myFile));
for(double i=0;i<nosofpackets+1;i++)
{
byte[] mybytearray = new byte[packetsize];
bis.read(mybytearray, 0, mybytearray.length);
System.out.println("Packet:"+(i+1));
dp=new DatagramPacket(mybytearray,mybytearray.length,InetAddress.getByName("172.17.13.46"),4000);
}
當兩個客戶端ANS服務器正在運行的服務器,然後停留在serverSocket.receive得到(receivePacket),如服務器產品線不接收任何packets.I不知道我在做什麼錯誤。
你用mp3或者wav文件測試過了嗎? –
我用二進制文件測試過它。 我通過計算原始文件sha1和命令文件檢查了2個文件。 SHA1 ---------------------------------------- ------ ------- ------------ 9574F1AE5946D8E6A86351389445FECF80242C25 aa.hex 9574F1AE5946D8E6A86351389445FECF80242C25 zz.hex 正如你可以看到這兩個文件具有相同SHA所以我覺得是竟被使用沒有問題mp3或wav文件。 – jmarques