Aloha ʻoe.
I kēia lā, makemake au e nānā i ke kaʻina hana o ke kākau ʻana i nā noi client-server e hana ana i nā hana o nā pono Windows maʻamau, e like me Telnet, TFTP, a me nā mea ʻē aʻe, a me nā mea ʻē aʻe ma Java maʻemaʻe. ʻIke maopopo ʻaʻole wau e lawe mai i kahi mea hou - ua hana maikaʻi kēia mau pono āpau no hoʻokahi makahiki, akā ke manaʻoʻiʻo nei au ʻaʻole ʻike nā mea a pau i ka mea e hana nei ma lalo o ka pā.
ʻO kēia ka mea e kūkākūkāʻia ma lalo o kaʻoki.
Ma kēia ʻatikala, i ʻole e huki ʻia, ma kahi o ka ʻike maʻamau, e kākau wale wau e pili ana i ka server Telnet, akā i kēia manawa aia kekahi mea ma nā mea pono ʻē aʻe - aia ma nā ʻāpana ʻē aʻe o ka moʻo.
ʻO ka mea mua, pono ʻoe e noʻonoʻo i ke ʻano o Telnet, he aha ka mea e pono ai, a he aha ia e hoʻohana ai. ʻAʻole wau e haʻi i nā kumu kumu verbatim (inā pono, e hoʻopili wau i kahi loulou i nā mea e pili ana i ke kumuhana ma ka hopena o ka ʻatikala), e ʻōlelo wale wau e hāʻawi ʻo Telnet i kahi mamao mamao i ka laina kauoha o ka hāmeʻa. ʻO ka nui, ʻo ia kahi e pau ai kāna hana (Ua ʻoluʻolu wau i noho mālie e pili ana i ke komo ʻana i ke awa kikowaena; ʻoi aku ka nui ma hope). ʻO ia ke ʻano o ka hoʻokō ʻana, pono mākou e ʻae i kahi laina ma ka mea kūʻai aku, e hāʻawi iā ia i ke kikowaena, e hoʻāʻo e hāʻawi i ka laina kauoha, heluhelu i ka pane laina kauoha, inā aia kekahi, e hoʻihoʻi i ka mea kūʻai aku a e hōʻike iā ia ma ka pale, a i ʻole, inā he hewa, e hōʻike i ka mea hoʻohana ua hewa kekahi mea.
No ka hoʻokō ʻana i ka mea i luna, no laila, pono mākou i nā papa hana 2 a me kekahi papa hoʻāʻo kahi e hoʻomaka ai mākou i ke kikowaena a ma o ia ka mea e hana ai ka mea kūʻai aku.
No laila, i kēia manawa ua komo ka ʻōnaehana noi:
- TelnetClient
- TelnetClientTester
- TelnetServer
- TelnetServerTester
E hele kāua i kēlā me kēia o lākou:
TelnetClient
Hiki i kēia papa ke hana i nā kauoha i loaʻa a hōʻike i nā pane i loaʻa. Eia hou, pono ʻoe e hiki ke hoʻopili i kahi awa kūʻokoʻa (e like me ka mea i ʻōlelo ʻia ma luna) o kahi hāmeʻa mamao a kāpae ʻia mai ia.
No ka hoʻokō ʻana i kēia, ua hoʻokō ʻia nā hana penei:
ʻO kahi hana e lawe ai i kahi helu kumu ma ke ʻano he hoʻopaʻapaʻa, wehe i kahi pilina a hoʻomaka i nā kahawai hoʻokomo a hoʻopuka (hōʻike ʻia nā kahawai wai ma luna, aia nā kumu piha ma ka hopena o ka ʻatikala).
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());
}
}
ʻO ka hoʻouka ʻana i ka hana like, e pili ana i ke awa paʻamau - no ka telnet ʻo 23 kēia
public void run(String ip)
{
run(ip, 23);
}
Heluhelu ka hana i nā huaʻōlelo mai ka papa keyboard a hoʻouna iā lākou i ke kumu puka - ʻo ia ka mea maʻamau, ma ke ʻano laina, ʻaʻole ke ʻano ʻano:
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());
}
}
Loaʻa ka hana i ka ʻikepili mai ke kumu a hōʻike iā ia ma ka pale
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());
}
}
Hoʻopau ka hana i ka loaʻa ʻana o ka ʻikepili a me ka lawe ʻana
public void stop()
{
reader.stop();
writer.stop();
}
}
TelnetServer
Pono kēia papa i ka hana o ka loaʻa ʻana o kahi kauoha mai kahi kumu, hoʻouna iā ia no ka hoʻokō ʻana, a hoʻouna i kahi pane mai ke kauoha e hoʻi i ke kumu. ʻAʻole nānā ka papahana i ka ʻikepili hoʻokomo, no ka mea, ʻo ka mea mua, ʻoiai ma ka "boxed telnet" hiki ke hoʻohālikelike i ka disk server, a ʻo ka lua, ua haʻalele ʻia ka pilikia o ka palekana ma kēia ʻatikala, a ʻo ia ke kumu ʻaʻole. he huaʻōlelo e pili ana i ka hoʻopunipuni a i ʻole SSL.
He 2 wale nō mau hana (ua hoʻonui ʻia kekahi o lākou), a ma ke ʻano maʻamau ʻaʻole ia he hana maikaʻi loa, akā no ke kumu o kēia hana, ua kūpono iaʻu e waiho i nā mea āpau e like me ia.
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();
}
Wehe ka polokalamu i ke awa kikowaena, heluhelu i ka ʻikepili mai ia mea a hiki i kona ʻike ʻana i kahi ʻano hoʻopau kauoha, hāʻawi i ke kauoha i kahi kaʻina hana hou, a hoʻihoʻi i ka hopena mai ke kaʻina hana i ke kumu. He mea maʻalahi nā mea a pau e like me ka pū hoʻouka kaua Kalashnikov.
No laila, aia kahi overload no kēia hana me kahi awa paʻamau:
public void run()
{
run(23);
}
ʻAe, no laila, he mea liʻiliʻi hoʻi ka hana e hoʻōki ai i ke kikowaena, hoʻopau ia i ka loop mau loa, e uhai ana i kona kūlana.
public void stop()
{
System.out.println("Server was stopped");
this.isRunning = false;
}
ʻAʻole wau e hāʻawi i nā papa hoʻāʻo ma ʻaneʻi, aia lākou ma lalo - ʻo kā lākou hana wale nō ke nānā i ka hana o nā ʻano lehulehu. Aia nā mea a pau ma ka git.
No ka hōʻuluʻulu ʻana, i nā ahiahi ʻelua hiki iā ʻoe ke hoʻomaopopo i nā loina o ka hana ʻana o nā mea pono console. I kēia manawa, ke telenet mākou i kahi kamepiula mamao, maopopo iā mākou ka mea e hana nei - ua nalowale ka kilokilo)
No laila, nā loulou:
Source: www.habr.com