[英]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是一種協議,可能希望您進行選項協商。 一旦您發送了有用的東西,它可能會給您發送一些有用的東西。
Telnet既是協議又是應用程序
當您使用telnet應用程序到計算機時,應用程序將發送協議信息,以便遠程計算機可以響應。
既然您說它留在那兒,那意味着它正在工作,只是您沒有遵循協議。
協議在這里描述:
http://tools.ietf.org/html/rfc854
您在這里嘗試做的是編寫一個telnet應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.