【发布时间】:2010-11-14 18:30:48
【问题描述】:
我有这个小测试套接字连接类:-
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();
}
}
当我使用另一个端口(例如 25 用于 SMTP)并且 r.readLine 的 println 工作得非常好时,它工作得非常好。我还可以通过命令提示符(telnet localhost 23)连接到端口 23,然后返回以下内容:-
Ubuntu 8.10 我的笔记本电脑登录:
但是当我尝试使用我的 java 类连接到端口 23 时,它只是挂在 readLine println 上。有人知道为什么吗?
【问题讨论】:
-
您要测试 Java 套接字吗?还是您专门使用 telnet 协议?如果你只是想测试socket代码,你可以考虑使用NetCat来监听一个连接(man nc)。
-
+1 用于 netcat - 除了调试 telnet 服务,它还允许调试 udp 连接。
-
我正在尝试创建一个测试,它将 telnet 到服务器,导航到文件夹并运行脚本(即 telnet ip,默认端口,输入用户名,输入密码,cd 到文件夹,运行脚本), 。我对服务器的唯一访问是通过 telnet。 (我目前只是使用 localhost,因为我还没有服务器连接)