Pisze aplikacje do przesyłanie dźwięku. Korzystam z java.sound i gniazd.
Dźwięk jest odtwarzany na serwerze jednak nie wiem dlaczego ten sam dźwięk odtwarzany jest wielokrotnie.
Serwer
ServerSocket ssocket = new ServerSocket (7779);
Socket s = ssocket.accept();
System.out.println ("nowe polaczenie");
DataInputStream in = new DataInputStream(
new BufferedInputStream(s.getInputStream()));
AudioFormat af = new AudioFormat (8000,16,1,true,false);
DataLine.Info sourceInfo = new DataLine.Info (SourceDataLine.class,af);
SourceDataLine sourceDataLine=null;
try {
sourceDataLine = (SourceDataLine)AudioSystem.getLine(sourceInfo);
sourceDataLine.open(af);
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sourceDataLine.start();
System.out.println ("odtwarzanie");
while(true)
{
byte[]b = new byte [5504];
in.read(b);
sourceDataLine.write(b, 0, b.length);
}
Klient
Socket s = new Socket ("localhost",7779);
DataOutputStream outToServer = new DataOutputStream(s.getOutputStream());
AudioFormat af = new AudioFormat (8000,16,1,true,false);
DataLine.Info targetInfo = new DataLine.Info (TargetDataLine.class,af);
TargetDataLine targetDataLine = null;
try {
targetDataLine = (TargetDataLine)AudioSystem.getLine(targetInfo);
targetDataLine.open(af);
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
targetDataLine.start();
System.out.println ("nagrywanie");
while(true)
{
int av=targetDataLine.available();
if (av>=5504)
{
byte[] b = new byte [av];
targetDataLine.read(b, 0, b.length);
outToServer.write(b);
}
}