繁体   English   中英

为什么与端口23的套接字连接不起作用?

[英]Why will socket connection to port 23 not work?

我有这个小的测试套接字连接类:

import java.net.Socket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;

public class TestTelnet {

public static void main(String args[]) throws Exception {
    Telnet telnet = new Telnet(); 
    Socket socket = null ;
    socket = new Socket("localhost", 23);
    socket.setKeepAlive(true);
    BufferedReader r = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        BufferedWriter w = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
    System.out.println(r.readLine());
    socket.close();
}
}

当我使用另一个端口(例如SMTP使用25)时,它工作得很好,而r.readLine的println表现出色。 我还可以通过命令提示符(telnet localhost 23)连接到端口23,并返回以下信息:

Ubuntu 8.10我的笔记本电脑登录:

但是,当我尝试使用Java类连接到端口23时,它只是挂在readLine println上。 有人知道为什么是这样吗?

我猜这是因为您期望有一条线路(带有CR或CRLF终端),但是您的telnet服务没有发送完整的线路。 尝试使用r.read()而不是r.readLine()

Telnet是一种协议,可能希望您进行选项协商。 一旦您发送了有用的东西,它可能会给您发送一些有用的东西。

参见: http : //www.faqs.org/rfcs/rfc854.html

Telnet既是协议又是应用程序

当您使用telnet应用程序到计算机时,应用程序将发送协议信息,以便远程计算机可以响应。

既然您说它留在那儿,那意味着它正在工作,只是您没有遵循协议。

协议在这里描述:

http://tools.ietf.org/html/rfc854

您在这里尝试做的是编写一个telnet应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM