ืืจืขืขืืื ืืก.
ืืืึทื ื ืืื ืืืึธืื ืืื ืฆื ืงืืงื ืืื ืืขื ืคึผืจืึธืฆืขืก ืคืื ืฉืจืืืื ืงืืืขื ื-ืกืขืจืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ื ืืืึธืก ืืืจืืคืืจื ืื ืคืึทื ืืงืฉืึทื ื ืคืื ื ืึธืจืืึทื Windows ืืืืืืึทืืื, ืึทืืึท ืืื ืืขืื ืขื, ืืคืืคึผ, ืขืืง, ืืื"ื ื ืืื ืจืืื ื'ืืื. ืขืก ืืื ืงืืึธืจ ืึทื ืืื ืืืขื ื ืืฉื ืืจืขื ืืขื ืขืคึผืขืก ื ืืึท - ืึทืืข ืื ืืืืืืึทืืื ืืึธืื ืฉืืื ืืจืืขืื ืืฆืืื ืคึฟืึทืจ ืืขืจ ืืื ืืืื ืืึธืจ, ืึธืืขืจ ืืื ืืืืืื ืึทื ื ืื ืึทืืขืืขื ืืืืืกื ืืืึธืก ืืื ืืขืฉืขืขื ืืฉ ืืื ืืขืจ ืื ืงืึทืคึผืืขืจ.
ืืึธืก ืืื ืคึผืื ืงื ืืืึธืก ืืืขื ืืืื ืืืกืงืึทืกื ืืื ืืขืจ ืื ืฉื ืืึทืื.
ืืื ืืขื ืึทืจืืืงื, ืึผืื ืขืก ื ืืฉื ืฆื ืฉืืขืคึผื, ืืื ืึทืืืฉืึทื ืฆื ืึทืืืขืืืื ืืื ืคึฟืึธืจืืึทืฆืืข, ืืื ืืืขื ืฉืจืืึทืื ืืืืื ืืืขืื ืื ืืขืื ืขื ืกืขืจืืืขืจ, ืึธืืขืจ ืืขืจืืืืึทื ืขืก ืืื ืืืื ืืึทืืขืจืืึทื ืืืืฃ ืื ืืขืจืข ืืืืืืึทืืื - ืขืก ืืืขื ืืืื ืืื ืืืืึทืืขืจ ืืืืื ืคืื ืืขืจ ืกืขืจืืข.
ืขืจืฉืืขืจ ืคืื ืึทืืข, ืืืจ ืืึทืจืคึฟื ืฆื ืจืขืืขื ืขื ืืืึธืก ืืขืื ืขื ืืื, ืืืึธืก ืขืก ืืื ืืืจืฃ ืคึฟืึทืจ ืืื ืืืึธืก ืขืก ืืื ืืขื ืืฆื ืคึฟืึทืจ. ืืื ืืืขื ื ืืฉื ืฆืืืืจื ืืงืืจืื ืืืขืจืืึทืืื (ืืืื ื ืืืืืง, ืืื ืืืขื ืฆืืืฉืขืคึผืขื ืึท ืืื ืง ืฆื ืืึทืืขืจืืึทืืก ืืืืฃ ืืขืจ ืืขืืข ืืื ืื ืกืืฃ ืคืื ืืขื ืึทืจืืืงื), ืืื ืืืขื ื ืึธืจ ืืึธืื ืึทื ืืขืื ืขื ืืื ืืืืึทื ืึทืงืกืขืก ืฆื ืื ืืึทืคึฟืขืื ืฉืืจื ืคืื ืื ืืืื. ืืืจื ืืื ืืจืืืก, ืืึธืก ืืื ืืื ืื ืคืึทื ืืงืฉืึทื ืึทืืืื ืขื ืืก (ืืื ืืืืืืจืึทืืื ืืขืืืืื ืฉืืื ืืืขืื ืึทืงืกืขืก ืื ืกืขืจืืืขืจ ืคึผืึธืจื; ืืขืจ ืืืขืื ืืขื ืฉืคึผืขืืขืจ). ืืขื ืืืื ืึทื ืฆื ืื ืกืืจืืืขื ื ืขืก, ืืืจ ืืึทืจืคึฟื ืฆื ืึธื ื ืขืืขื ืึท ืฉืืจื ืืืืฃ ืืขื ืงืืืขื ื, ืคืึธืจื ืขืก ืฆื ืื ืกืขืจืืืขืจ, ืคึผืจืืืืจื ืฆื ืคืึธืจื ืขืก ืฆื ืื ืืึทืคึฟืขื ืฉืืจื, ืืืืขื ืขื ืื ืืึทืคึฟืขืื ืฉืืจื ืขื ืืคืขืจ, ืืืื ืขืก ืืื ืืืื, ืคืึธืจื ืขืก ืฆืืจืืง ืฆื ืืขืจ ืงืืืขื ื ืืื ืืืืึทืื ืขืก ืืืืฃ ืืขื ืขืงืจืึทื, ืึธืืขืจ, ืืืื ืขืจืจืึธืจืก, ืืึธืื ืื ืืึทื ืืฆืขืจ ืืืืกื ืึทื ืขืคึผืขืก ืืื ืคืึทืืฉ.
ืฆื ืื ืกืืจืืืขื ื ืื ืืืืื, ืึทืงืึธืจืืื ืืื, ืืืจ ืืึทืจืคึฟื 2 ืืจืืขืื ืงืืืกื ืืื ืขืืืขืืข ืคึผืจืืืืจื ืงืืึทืก ืคืื ืืืึธืก ืืืจ ืืืขืื ืงืึทืืขืจ ืื ืกืขืจืืืขืจ ืืื ืืืจื ืืืึธืก ืืขืจ ืงืืืขื ื ืืืขื ืึทืจืืขืื.
ืืขืจืืืืึทื, ืื ืึทืคึผืืึทืงืืืฉืึทื ืกืืจืืงืืืจ ืืืื:
- TelnetClient
- TelnetClientTester
- TelnetServer
- TelnetServerTester
ืืึธืืืจ ืืืื ืืืจื ืืขืืขืจ ืคืื ืืื:
TelnetClient
ืึทืืข ืืขื ืงืืึทืก ืืึธื ืงืขื ืขื ืฆื ืืึธื ืืื ืฉืืงื ืืืงืืืขื ืงืึทืืึทื ืื ืืื ืืืืึทืื ืื ืืืงืืืขื ืจืขืกืคึผืึธื ืกืขืก. ืืื ืืขืจืฆื, ืืืจ ืืึทืจืคึฟื ืฆื ืงืขื ืขื ืฆื ืคืึทืจืืื ืื ืฆื ืึท ืึทืจืืืืจืึทืจืืฉ (ืืื ืืขืจืืื ื ืืืืื) ืคึผืึธืจื ืคืื ืึท ืืืืึทื ืืืื ืืื ืืืกืงืึทื ืขืงื ืืขืจืคืื.
ืฆื ืืขืจืืจืืืื ืืขื, ืื ืคืืืืขื ืืข ืคืึทื ืืงืฉืึทื ื ืืขื ืขื ืืืคึผืืึทืืขื ืึทื:
ื ืคึฟืื ืงืฆืืข ืืืึธืก ื ืขืื ืึท ืืึธืืขื ืึทืืจืขืก ืืื ืึทื ืึทืจืืืืขื ื, ืึธืคึผืขื ืก ืึท ืงืฉืจ ืืื ืกืืึทืจืฅ ืึทืจืืึทื ืฉืจืืึทื ืืื ืจืขืืืืืึทื ืกืืจืืื (ืกืืจืื ืืืขืจืืึทืืึทืื ืืขื ืขื ืืขืจืงืืขืจื ืืืืื, ืคืื ืงืืืืื ืืขื ืขื ืืื ืื ืกืืฃ ืคืื ืืขื ืึทืจืืืงื).
public void run(String ip, int port)
{
try {
Socket socket = new Socket(ip, port);
InputStream sin = socket.getInputStream();
OutputStream sout = socket.getOutputStream();
Scanner keyboard = new Scanner(System.in);
reader = new Thread(()->read(keyboard, sout));
writer = new Thread(()->write(sin));
reader.start();
writer.start();
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
ืึธืืืขืจืืึธืึทื ืื ืืขืืืข ืคืื ืงืฆืืข, ืงืึทื ืขืงืืื ื ืฆื ืื ืคืขืืืงืืึทื ืคึผืึธืจื - ืคึฟืึทืจ ืืขืื ืขื ืืึธืก ืืื 23
public void run(String ip)
{
run(ip, 23);
}
ืื ืคึฟืื ืงืฆืืข ืืืืขื ื ืืืชืืืช ืคืื ืื ืงืืึทืืืืึทืืืจ ืืื ืกืขื ืื ืืื ืฆื ืื ืจืขืืืืืึทื ืืึธืืขื - ืืืึธืก ืืื ืืืคึผืืฉ ืืื ืฉืืจื ืืึธืืข, ื ืืฉื ืืึทืจืึทืงืืขืจ ืืึธืืข:
private void read(Scanner keyboard, OutputStream sout)
{
try {
String input = new String();
while (true) {
input = keyboard.nextLine();
for (char i : (input + " n").toCharArray())
sout.write(i);
}
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
ืื ืคืื ืงืฆืืข ื ืขืื ืืึทืื ืคืื ืื ืืึธืืขื ืืื ืืืกืคึผืืืื ืขืก ืืืืฃ ืืขื ืขืงืจืึทื
private void write(InputStream sin)
{
try {
int tmp;
while (true){
tmp = sin.read();
System.out.print((char)tmp);
}
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
ืื ืคึฟืื ืงืฆืืข ืกืืึทืคึผืก ืืึทืื ืึธืคึผืืจืึธื ืืื ืืจืึทื ืกืืืกืืข
public void stop()
{
reader.stop();
writer.stop();
}
}
TelnetServer
ืืขืจ ืงืืึทืก ืืืื ืืึธืื ืื ืคืึทื ืืงืฉืึทื ืึทืืืื ืคืื ืืึทืงืืืขื ืึท ืืึทืคึฟืขื ืคืื ืึท ืืึธืืขื, ืฉืืงื ืขืก ืคึฟืึทืจ ืืืจืืคืืจืื ื, ืืื ืฉืืงื ืึท ืขื ืืคืขืจ ืคืื ืื ืืึทืคึฟืขื ืฆืืจืืง ืฆื ืื ืืึธืืขื. ืื ืคึผืจืึธืืจืึทื ืืืืืืจืึทืืื ืืื ื ืืฉื ืงืึธื ืืจืึธืืืจื ืื ืึทืจืืึทื ืฉืจืืึทื ืืึทืื, ืืืืึทื ืขืจืฉืืขืจ, ืืคืืื ืืื "ืืึธืงืกืขื ืืขืื ืขื" ืขืก ืืื ืืขืืืขื ืฆื ืคึฟืึธืจืืึทื ืื ืกืขืจืืืขืจ ืืืกืง, ืืื ืฆืืืืืื ืก, ืื ืึทืจืืืกืืขืื ืคืื ืืืืขืจืืืื ืืื ืืขื ืึทืจืืืงื ืืื ืืืืขืจืืขืืืคึผืขืจื ืืื ืคึผืจืื ืฆืืคึผ, ืืื ืืึธืก ืืื ืืืึธืก ืขืก ืืื ื ืืฉื. ืึท ืืืึธืจื ืืืขืื ืขื ืงืจืืคึผืฉืึทื ืึธืืขืจ ืกืกื.
ืขืก ืืขื ืขื ืืืืื 2 ืคืึทื ืืงืฉืึทื ื (ืืืื ืขืจ ืคืื ืืื ืืื ืึธืืืืขืจืืึธืืืื), ืืื ืืื ืึทืืืขืืืื, ืืึธืก ืืื ื ืืฉื ืึท ืืืืขืจ ืืื ืคืืจ, ืึธืืขืจ ืคึฟืึทืจ ืื ืฆืืืขืงื ืคืื ืืขื ืึทืจืืขื, ืขืก ืืขืืืขื ืฆืื ืขืืขื ืฆื ืืืจ ืฆื ืืึธืื ืึทืืฅ ืืื ืขืก ืืื.
boolean isRunning = true;
public void run(int port) {
(new Thread(()->{ try {
ServerSocket ss = new ServerSocket(port); // ัะพะทะดะฐะตะผ ัะพะบะตั ัะตัะฒะตัะฐ ะธ ะฟัะธะฒัะทัะฒะฐะตะผ ะตะณะพ ะบ ะฒััะตัะบะฐะทะฐะฝะฝะพะผั ะฟะพััั
System.out.println("Port "+port+" is waiting for connections");
Socket socket = ss.accept();
System.out.println("Connected");
System.out.println();
// ะะตัะตะผ ะฒั
ะพะดะฝะพะน ะธ ะฒัั
ะพะดะฝะพะน ะฟะพัะพะบะธ ัะพะบะตัะฐ, ัะตะฟะตัั ะผะพะถะตะผ ะฟะพะปััะฐัั ะธ ะพัััะปะฐัั ะดะฐะฝะฝัะต ะบะปะธะตะฝัั.
InputStream sin = socket.getInputStream();
OutputStream sout = socket.getOutputStream();
Map<String, String> env = System.getenv();
String wayToTemp = env.get("TEMP") + "tmp.txt";
for (int i :("Connectednnr".toCharArray()))
sout.write(i);
sout.flush();
String buffer = new String();
while (isRunning) {
int intReader = 0;
while ((char) intReader != 'n') {
intReader = sin.read();
buffer += (char) intReader;
}
final String inputToSubThread = "cmd /c " + buffer.substring(0, buffer.length()-2) + " 2>&1";
new Thread(()-> {
try {
Process p = Runtime.getRuntime().exec(inputToSubThread);
InputStream out = p.getInputStream();
Scanner fromProcess = new Scanner(out);
try {
while (fromProcess.hasNextLine()) {
String temp = fromProcess.nextLine();
System.out.println(temp);
for (char i : temp.toCharArray())
sout.write(i);
sout.write('n');
sout.write('r');
}
}
catch (Exception e) {
String output = "Something gets wrong... Err code: "+ e.getStackTrace();
System.out.println(output);
for (char i : output.toCharArray())
sout.write(i);
sout.write('n');
sout.write('r');
}
p.getErrorStream().close();
p.getOutputStream().close();
p.getInputStream().close();
sout.flush();
}
catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}).start();
System.out.println(buffer);
buffer = "";
}
}
catch(Exception x) {
System.out.println(x.getMessage());
}})).start();
}
ืืขืจ ืคึผืจืึธืืจืึทื ืขืคึฟื ื ืืขื ืกืขืจืืืขืจ ืคึผืึธืจื, ืืืืขื ื ืืึทืื ืคึฟืื ืืื ืืื ืขืก ืืจืขืคื ืึท ืืึทืคึฟืขื ืกืืฃ ืืึทืจืึทืงืืขืจ, ืคึผืึทืกืื ืื ืืึทืคึฟืขื ืฆื ืึท ื ืืึทืข ืคึผืจืึธืฆืขืก, ืืื ืจืืืขืจืขืงื ืื ืจืขืืืืืึทื ืคืื ืืขื ืคึผืจืึธืฆืขืก ืฆื ืื ืืึธืืขื. ืึทืืฅ ืืื ืคึผืฉืื ืืื ืึท ืงืึทืืึทืฉื ืืงืึธืื ืึทืืึทืงืข ืืืงืก.
ืึทืงืงืึธืจืืื ืืื, ืขืก ืืื ืึท ืึธืืืขืจืืึธืึทื ืคึฟืึทืจ ืืขื ืคึฟืื ืงืฆืืข ืืื ืึท ืคืขืืืงืืึทื ืคึผืึธืจื:
public void run()
{
run(23);
}
ื ื, ืึทืงืึธืจืืื ืืื, ืื ืคืื ืงืฆืืข ืืืึธืก ืกืืึทืคึผืก ืื ืกืขืจืืืขืจ ืืื ืืืื ื ืืฉืืืง, ืขืก ืื ืืขืจืึทืคึผืฅ ืื ืืืืืืง ืฉืืืืฃ, ืืืืืึทืืืืืื ื ืืืึทื ืฆืืฉืืึทื ื.
public void stop()
{
System.out.println("Server was stopped");
this.isRunning = false;
}
ืืื ืืืขื ื ืืฉื ืืขืื ืืขืกื ืงืืืกื ืืึธ, ืืื ืืขื ืขื ืืื ืื - ืึทืืข ืืื ืืึธื ืืื ืงืึธื ืืจืึธืืืจื ืื ืคืึทื ืืงืฉืึทื ืึทืืืื ืคืื ืขืคื ืืืขื ืืขืืืึธืืก. ืึทืืฅ ืืื ืืืืฃ ืืขืจ ืขืจื.
ืฆื ืกืึทืืขืจืืื, ืืื ืึท ืคึผืึธืจ ืคืื ืืืื ืื ืื ืืืจ ืงืขื ืขื ืคึฟืึทืจืฉืืืื ืื ืคึผืจืื ืฆืืคึผื ืคืื ืึธืคึผืขืจืึทืฆืืข ืคืื โโืื ืืืืคึผื ืงืึทื ืกืึธืื ืืืืืืึทืืื. ืืืฆื, ืืืขื ืืืจ ืืขืืขื ืขื ืฆื ืึท ืืืืึทื ืงืึธืืคึผืืืืขืจ, ืืืจ ืคึฟืึทืจืฉืืืื ืืืึธืก ืืื ืืขืฉืขืขื ืืฉ - ืื ืืึทืืืฉ ืืื ืคืึทืจืฉืืืื ืื)
ืึทืืื, ืื ืืื ืงืก:
ืืงืืจ: www.habr.com