我在java中编写ServerSocket
。我想通过telnet
向客户发送一些特殊内容给我。如果他/她通过浏览器等连接,我想发送其他内容。有没有办法找出该用户通过telnet
与我联系?
我的代码:
public void handleConnection(Socket socket) throws IOException {
String author = "Ehsan Akbari";
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
if(checkoutClientType(socket)=="telnet")
out.println("You are connecting through telnet :\)");
else
out.println("You are not connecting through telnet :|");
}
checkoutClientType(Socket s);
的定义应该是什么?
答案 0 :(得分:0)
通过检查套接字本身,您无法分辨套接字另一端的程序。您无法在套接字上执行可以区分客户端程序的测试或操作。
唯一的希望是检查传输的数据以查看它是否与预期模式匹配,但为此必须传输一些数据。如果您要发送一个Telnet协议命令,例如AYT(Are You There),可能可能可以判断远程是否为telnet,但这可能不适合与其他客户端(如a)浏览器。
如果您能够在客户端和处理进程或线程之间代理数据并对其进行检查,那么您最终可以确定它是否是Telnet,但可能不是,也可能不是立即。