Java Socket Telnet 服务器和客户端

TelnetServer.java

// Telnet server

import java.net.*;
import java.io.*;
import java.lang.*;
import java.io.*;
import java.util.*;

class TelnetServer {
	public static void main(String args[]) throws Exception {
		ServerSocket Soc = new ServerSocket(5217);
		while (true) {
			Socket CSoc = Soc.accept();
			AcceptTelnetClient ob = new AcceptTelnetClient(CSoc);
		}
	}
}

class AcceptTelnetClient extends Thread {
	Socket ClientSocket;
	DataInputStream din;
	DataOutputStream dout;
	String LoginName;
	String Password;

	AcceptTelnetClient(Socket CSoc) throws Exception {
		ClientSocket = CSoc;
		System.out.println("Client Connected ...");
		DataInputStream din = new DataInputStream(ClientSocket.getInputStream());
		DataOutputStream dout = new DataOutputStream(ClientSocket.getOutputStream());

		System.out.println("Waiting for UserName And Password");

		LoginName = din.readUTF();
		Password = din.readUTF();

		start();
	}

	public void run() {
		try {
			DataInputStream din = new DataInputStream(ClientSocket.getInputStream());
			DataOutputStream dout = new DataOutputStream(ClientSocket.getOutputStream());

			BufferedReader brFin = new BufferedReader(new FileReader("Passwords.txt"));

			String LoginInfo = new String("");
			boolean allow = false;

			while ((LoginInfo = brFin.readLine()) != null) {
				StringTokenizer st = new StringTokenizer(LoginInfo);
				if (LoginName.equals(st.nextToken()) && Password.equals(st.nextToken())) {
					dout.writeUTF("ALLOWED");
					allow = true;
					break;
				}
			}

			brFin.close();

			if (allow == false) {
				dout.writeUTF("NOT_ALLOWED");
			}

			while (allow) {
				String strCommand;
				strCommand = din.readUTF();
				if (strCommand.equals("quit")) {
					allow = false;
				} else {
					Runtime rt = Runtime.getRuntime();

					Process p = rt.exec("cmd /c " + strCommand);

					String stdout = new String("");
					String st;
					DataInputStream dstdin = new DataInputStream(p.getInputStream());
					while ((st = dstdin.readLine()) != null) {
						stdout = stdout + st + "\n";
					}
					dstdin.close();
					dout.writeUTF(stdout);
				}
			}
			ClientSocket.close();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
}

TelnetClient.java

// Telnet Client

import java.net.*;
import java.io.*;

class TelnetClient {
	public static void main(String args[]) throws Exception {
		Socket soc = new Socket("127.0.0.1", 5217);
		String LoginName;
		String Password;
		String Command;

		DataInputStream din = new DataInputStream(soc.getInputStream());
		DataOutputStream dout = new DataOutputStream(soc.getOutputStream());
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		System.out.println("Welcome to Telnet Client");
		System.out.println("Your Credential Please...");
		System.out.print("Login Name :");

		LoginName = br.readLine();

		System.out.print("Password :");
		Password = br.readLine();

		dout.writeUTF(LoginName);
		dout.writeUTF(Password);

		if (din.readUTF().equals("ALLOWED")) {
			do {
				System.out.print("< Telnet Prompt >");
				Command = br.readLine();
				dout.writeUTF(Command);
				if (!Command.equals("quit")) {
					System.out.println(din.readUTF());
				}
			} while (!Command.equals("quit"));
		}
		soc.close();
	}
}

Passwords.txt

admin password

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值