簡體   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