SD-211 - show all recordings and play them

This commit is contained in:
2022-03-30 10:34:57 +03:00
parent 8bb6f36e60
commit 3f96055a6e
12 changed files with 283 additions and 250 deletions

View File

@ -8,140 +8,108 @@ import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TCPaudioClient implements Runnable{
private boolean alive = true;
public String serverHostname = new String ("10.120.1.114");//
private int port = 50001;
public class TcpAudioClient implements Runnable {
private boolean alive = true;
private String serverHostname;
private final int port;
private Thread listenThread;
private Socket soc =null;
private Socket soc = null;
private InputStream recv;
private OutputStream writer;
private volatile int n=0;
public Boolean connOK=false;
private Boolean connOK = false;
byte[] buffer = new byte[16384];
private List<ITCPaudioLis> _listeners = new ArrayList<ITCPaudioLis>();
public TCPaudioClient(String hostName, int _port)
{
serverHostname=hostName;
this.port = _port;
SM.Debug("---TCPhandler construcort--- port:"+_port);
listenThread = new Thread(this, "TCPlisten");
private final List<ITCPaudioLis> listeners = new ArrayList<>();
public TcpAudioClient(String hostName, int port) {
setServerHostname(hostName);
this.port = port;
SM.Debug("---TcpHandler constructor--- port:" + port);
listenThread = new Thread(this, "TcpListen");
listenThread.start(); // (2) Start the thread.
}
@Override
public void run()
{
try
{
soc = new Socket(serverHostname, port);
SM.Debug("Socket timeout:" + soc.getSoTimeout() );
//soc.setSoTimeout(5000);
recv= soc.getInputStream();
writer =soc.getOutputStream() ;
if(soc !=null)
connOK = true;
}
catch (UnknownHostException e)
{
SM.Debug("UnknownHostException", "break:"+e.toString());
}
catch (IOException e)
{
SM.Debug("IOException", "break:"+e.toString());
public void run() {
try {
soc = new Socket(getServerHostname(), port);
SM.Debug("Socket timeout:" + soc.getSoTimeout());
recv = soc.getInputStream();
writer = soc.getOutputStream();
if (soc != null)
setConnOK(true);
} catch (UnknownHostException e) {
SM.Debug("UnknownHostException", "break:" + e);
} catch (IOException e) {
SM.Debug("IOException", "break:" + e);
}
while(alive)
{
while (alive) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
SM.Debug(e.toString());
Thread.currentThread().interrupt();
}
while(connOK)
{
try
{
buffer = new byte[16384];
n = recv.read(buffer);
if(n==-1)
while (Boolean.TRUE.equals(getConnOK())) {
try {
buffer = new byte[16384];
int n = recv.read(buffer);
if (n == -1)
break;
_fireDataArrived(buffer,n);
fireDataArrived(buffer, n);
} catch (Exception ex) {
SM.Debug("break:" + ex);
setConnOK(false);
}
catch(Exception ex)
{
SM.Debug("break:"+ex.toString());
connOK = false;
}
}//while(connOK)
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
SM.Debug(e.toString());
Thread.currentThread().interrupt();
}
if(alive)RestartTCP();
}//while(alive)
if (alive) restartTCP();
}
SM.Debug("==================================");
SM.Debug("TCP listenThread stoped!! alive = false");
SM.Debug("TCP listenThread stopped!! alive = false");
SM.Debug("==================================");
}
public boolean Send(byte[] data,int len)
{
try
{
if(writer != null)
{
writer.write(data,0,len);
public boolean send(byte[] data, int len) {
try {
if (writer != null) {
writer.write(data, 0, len);
return true;
}
else
{
} else {
return false;
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
} catch (Exception e) {
SM.Debug(e.toString());
}
return false;
}
private void RestartTCP()
{
try
{
SM.Debug("Restarting TCP...ip:"+serverHostname);
soc = new Socket(serverHostname, port);
recv= soc.getInputStream();
writer =soc.getOutputStream();
if(soc !=null)
connOK = true;
}
catch (UnknownHostException e)
{
SM.Debug("break:"+e.toString());
}
catch (IOException e)
{
SM.Debug("break:"+e.toString());
private void restartTCP() {
try {
SM.Debug("Restarting TCP...ip:" + getServerHostname());
soc = new Socket(getServerHostname(), port);
recv = soc.getInputStream();
writer = soc.getOutputStream();
setConnOK(true);
} catch (IOException e) {
SM.Debug("break:" + e);
}
}
@ -152,44 +120,55 @@ private boolean alive = true;
public void setAlive(boolean alive) {
this.alive = alive;
}
public void Stop()
{
public void stop() {
this.alive = false;
if(soc !=null)
{
if (soc != null) {
try {
soc.close();
soc = null;
} catch (IOException e) {
// TODO Auto-generated catch block
SM.Debug("break:"+e.toString());
SM.Debug("break:" + e);
}
connOK = false;
setConnOK(false);
}
// stop thread
if(listenThread != null)
{
Thread moribund = listenThread;
listenThread = null;
moribund.interrupt();
}
if (listenThread != null) {
Thread moribund = listenThread;
listenThread = null;
moribund.interrupt();
}
}
public synchronized void addTCPListener( ITCPaudioLis l ) {
_listeners.add( (ITCPaudioLis) l );
}
public synchronized void removeTCPListener( ITCPaudioLis l ) {
_listeners.remove( l );
public synchronized void addTCPListener(ITCPaudioLis l) {
listeners.add(l);
}
private synchronized void _fireDataArrived(byte[] data, int len) {
TCPaudioEvent event = new TCPaudioEvent( this, data, len );
Iterator<ITCPaudioLis> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPaudioLis) listeners.next() ).dataRecv(event);
}
public synchronized void removeTCPListener(ITCPaudioLis l) {
listeners.remove(l);
}
}
private synchronized void fireDataArrived(byte[] data, int len) {
TCPaudioEvent event = new TCPaudioEvent(this, data, len);
for (ITCPaudioLis listener : listeners) {
listener.dataRecv(event);
}
}
public String getServerHostname() {
return serverHostname;
}
public void setServerHostname(String serverHostname) {
this.serverHostname = serverHostname;
}
public Boolean getConnOK() {
return connOK;
}
public void setConnOK(Boolean connOK) {
this.connOK = connOK;
}
}