Witam, posiadam aplikacje która tworzy localsocket
public void run() throws Throwable {
serverSocketRun = true;
while (serverSocketRun) {
if (socketServer == null) {
try {
socketServer = new LocalServerSocket(SOCKET_NAME);
} catch (IOException e) {
e.printStackTrace();
}
}
try {
// socket.setSoTimeout(3000);
// socket.setReceiveBufferSize(50000);
socket = socketServer.accept();
// socket.setSendBufferSize(50000);
ClientThread clientThread = new ClientThread();
mRun = true;
clientThread.start();
} catch (Exception e) {
System.out.println("catch");
try {
socket.close();
} catch (IOException e1) {
e1.printStackTrace();
}
mRun = false;
}
Thread.sleep(0);
}
}
class ClientThread extends Thread {
public void run() {
System.out.println("Wątek start");
// Log.d("Wątek", "wątek startLog");
mRun = true;
byte[] data = new byte[10024];
while (mRun) {
try {
int read_count = 0;
read_count = read(data, read_count);
if(read_count>0) {
String s = new String(data, "CP1250");
sendMessage("s");
}
} catch (Exception e) {
mRun = false;
}
}
}
}
W pętli testowo wysyłam z drugiej aplikacji która łączy się z localsocketem 100 razy requesta
for(int i=0;i<100;i++) {
sockets.JsonRequest("message");
}
Całość operacji trwa ponad sekunde co wg mnie jest zbyt długim czasem. Testowo zauważyłem że sam read trwa kilka milisekund co wydaje się absurdem
Log.d("przed odczytem",getCurrentTimeStamp());
read = socket.getInputStream().read(data,0,256);
Log.d("po odczycie",getCurrentTimeStamp());
Poniżej przykładowe wyniki jakie otrzymałem
01-12 22:08:16.772 28670-28835/D/przed odczytem: 2018-01-12 22:08:16.771
01-12 22:08:16.781 28670-28835/ D/po odczycie: 2018-01-12 22:08:16.781
01-12 22:08:16.788 28670-28835/D/przed odczytem: 2018-01-12 22:08:16.788
01-12 22:08:16.794 28670-28835/ D/po odczycie: 2018-01-12 22:08:16.793
Czy jest jakaś szansa by przyspieszyć ??