package Cau4 ;
import java.io.BufferedReader ;
import java.io.BufferedWriter ;
import java.io.IOException ;
import java.io.InputStreamReader ;
import java.io.OutputStreamWriter ;
import java.net.Socket ;
import java.util.Calendar ;
public class ServerThread
extends Thread { private long thoiGianNhan;
public ServerThread
( Socket socket
) { this .socket = socket;
}
@Override
public void run( ) {
// khoi tao luong vao ra
try {
socket.getInputStream ( ) ) ) ;
socket.getOutputStream ( ) ) ) ;
// nhan yeu cau tu client
String request
= in.
readLine ( ) ; thoiGianNhan
= System .
currentTimeMillis ( ) ; if ( request.equals ( "time" ) ) {
} else {
result = "" ;
}
// nhan thoi gian ma client gui goi tin di
long thoiGianClientGui
= Long .
parseLong ( in.
readLine ( ) ) ; long doTreGoiTin = thoiGianNhan - thoiGianClientGui;
// tra ve ket qua cho client
out.write ( result + " Do tre la " + doTreGoiTin) ;
out.newLine ( ) ;
out.flush ( ) ;
// TODO Auto-generated catch block
e.printStackTrace ( ) ;
}
}
}
cGFja2FnZSBDYXU0OwoKaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CmltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkV3JpdGVyOwppbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXI7CmltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbVdyaXRlcjsKaW1wb3J0IGphdmEubmV0LlNvY2tldDsKaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKCnB1YmxpYyBjbGFzcyBTZXJ2ZXJUaHJlYWQgZXh0ZW5kcyBUaHJlYWQgewoJcHJpdmF0ZSBTb2NrZXQgc29ja2V0ID0gbnVsbDsKCXByaXZhdGUgQnVmZmVyZWRSZWFkZXIgaW4gPSBudWxsOwoJcHJpdmF0ZSBCdWZmZXJlZFdyaXRlciBvdXQgPSBudWxsOwoJcHJpdmF0ZSBsb25nIHRob2lHaWFuTmhhbjsKCXB1YmxpYyBTZXJ2ZXJUaHJlYWQoU29ja2V0IHNvY2tldCkgewoJCXRoaXMuc29ja2V0ID0gc29ja2V0OwoJfQoKCUBPdmVycmlkZQoJcHVibGljIHZvaWQgcnVuKCkgewoJCS8vIGtob2kgdGFvIGx1b25nIHZhbyByYQoJCXRyeSB7CgkJCWluID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcigKCQkJCQlzb2NrZXQuZ2V0SW5wdXRTdHJlYW0oKSkpOwoJCQlvdXQgPSBuZXcgQnVmZmVyZWRXcml0ZXIobmV3IE91dHB1dFN0cmVhbVdyaXRlcigKCQkJCQlzb2NrZXQuZ2V0T3V0cHV0U3RyZWFtKCkpKTsKCgkJCS8vIG5oYW4geWV1IGNhdSB0dSBjbGllbnQKCQkJU3RyaW5nIHJlcXVlc3QgPSBpbi5yZWFkTGluZSgpOwoJCQl0aG9pR2lhbk5oYW4gPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKCQkJU3RyaW5nIHJlc3VsdDsKCQkJaWYgKHJlcXVlc3QuZXF1YWxzKCJ0aW1lIikpIHsKCQkJCUNhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CgkJCQlyZXN1bHQgPSBjYWwuZ2V0KENhbGVuZGFyLkhPVVIpICsgIjoiCgkJCQkJCSsgY2FsLmdldChDYWxlbmRhci5NSU5VVEUpICsgIjoiCgkJCQkJCSsgY2FsLmdldChDYWxlbmRhci5TRUNPTkQpOwoJCQl9IGVsc2UgewoJCQkJcmVzdWx0ID0gIiI7CgkJCX0KCQkJLy8gbmhhbiB0aG9pIGdpYW4gbWEgY2xpZW50IGd1aSBnb2kgdGluIGRpCgkJCWxvbmcgdGhvaUdpYW5DbGllbnRHdWkgPSBMb25nLnBhcnNlTG9uZyhpbi5yZWFkTGluZSgpKTsKCQkJbG9uZyBkb1RyZUdvaVRpbiA9IHRob2lHaWFuTmhhbiAtIHRob2lHaWFuQ2xpZW50R3VpOwoJCQkvLyB0cmEgdmUga2V0IHF1YSBjaG8gY2xpZW50CgkJCW91dC53cml0ZShyZXN1bHQgKyAiIERvIHRyZSBsYSAiICsgZG9UcmVHb2lUaW4pOwoJCQlvdXQubmV3TGluZSgpOwoJCQlvdXQuZmx1c2goKTsKCgkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgewoJCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrCgkJCWUucHJpbnRTdGFja1RyYWNlKCk7CgkJfQoJfQp9Cg==