“新路线的重要性”\";在Java网络中

“新路线的重要性”\";在Java网络中,java,sockets,networking,Java,Sockets,Networking,嗯,我需要澄清什么是字符串变量中“\n”新行的重要性 import java.net.*; import java.io.*; public class Whois{ public static void main(String[] args){ try{ Socket soc = new Socket("whois.internic.net",43); InputStream in = soc.getInputStrea

嗯,我需要澄清什么是字符串变量中“\n”新行的重要性

import java.net.*;
import java.io.*;

public class Whois{
    public static void main(String[] args){
        try{
            Socket soc = new Socket("whois.internic.net",43);
            InputStream in = soc.getInputStream();
            OutputStream out = soc.getOutputStream();
            String url = "http://www.infiniteskills.com\n";
            byte[] buffer = url.getBytes();
            out.write(buffer);
            int c;
            while((c = in.read()) != -1){
                    System.out.print((char)c);  
            }
            in.close();
            out.close();
        }catch(IOException e){
            System.out.println(e.getMessage());
        }
    }
}

注意:-如果没有\n,程序将无法正常工作并且没有输出。

TCP端口43是Wikipedia上解释的WHOIS协议:

如果您看到的文章是这样写的:发送一个“命令行”,以CRLF结尾。

这就是为什么在代码中需要换行符。

TCP端口43是Wikipedia上解释的WHOIS协议:

如果您看到的文章是这样写的:发送一个“命令行”,以CRLF结尾。

这就是为什么在代码中需要换行符。

换行符在Java网络中并不重要

然而,它在许多协议中具有重要意义,其中许多协议基于作为线路终止符的
\r\n
的“Telnet终端”约定。这当然包括SMTP、FTP、HTTP和Telnet本身


它对于
BufferedReader.readLine()
方法也很重要。这里有数百个关于
readLine()
永远阻塞的问题,答案是“你在读行,但不是在写行”,即只发送一个没有行终止符的字符串。这并不构成一个完整的行,因此
readLine()
不会返回它。

新行在Java网络中不重要

然而,它在许多协议中具有重要意义,其中许多协议基于作为线路终止符的
\r\n
的“Telnet终端”约定。这当然包括SMTP、FTP、HTTP和Telnet本身


它对于
BufferedReader.readLine()
方法也很重要。这里有数百个关于
readLine()
永远阻塞的问题,答案是“你在读行,但不是在写行”,即只发送一个没有行终止符的字符串。这并不构成一个完整的行,因此
readLine()
不会返回它。

您发送它的协议是什么?可能有助于了解
out
in
是什么。好的,我将编辑帖子。在某些协议(如HTTP)中,新行是重要的(它们会在标题完成时显示)。如果在最后一个标题后不发送两行新行,则不会完成。是否确定?示例代码中使用的协议是WHOIS,而不是HTTP。完全不同。您发送它的协议是什么?可能有助于了解
out
in
是什么。好的,我将编辑postIn一些协议(如HTTP)换行符很重要(它们会在标题完成时说)。如果在最后一个标题后不发送两行新行,则不会完成。是否确定?示例代码中使用的协议是WHOIS,而不是HTTP。完全不同。如果它说的是
CRLF
,那么他不需要以
\r\n
结尾吗?或者
\r
是由其他层插入的?实际上@ajb是正确的,它可能需要
\r\n
才能完全符合Whois协议。它与
\n
一起工作的事实可能只取决于服务器实现。在这种情况下,服务器响应
\n
(这可能是一件好事)。蝎子,我没有暗示任何问题,只是给你一个Whois协议的参考,这样你就可以了解如何排除故障。我希望我的回答有帮助!如果它说
CRLF
,那么他不需要以
\r\n
结尾吗?或者
\r
是由其他层插入的?实际上@ajb是正确的,它可能需要
\r\n
才能完全符合Whois协议。它与
\n
一起工作的事实可能只取决于服务器实现。在这种情况下,服务器响应
\n
(这可能是一件好事)。蝎子,我没有暗示任何问题,只是给你一个Whois协议的参考,这样你就可以了解如何排除故障。我希望我的回答有帮助@这个答案回答了问题的标题和正文中都明确说明的问题。更重要的是,原来的海报已经接受它作为正确的答案。因此,你的评论读起来有点奇怪。对不起@EJP,是的,你的文章是建设性的。我没有对你的帖子发表评论,至少我在这里没有看到。告诉OP一点关于“谁是谁”可能会很好。@AlvinBunk这个答案回答了在标题和问题正文中都明确说明的问题。更重要的是,原来的海报已经接受它作为正确的答案。因此,你的评论读起来有点奇怪。对不起@EJP,是的,你的文章是建设性的。我没有对你的帖子发表评论,至少我在这里没有看到。不过,告诉OP一点关于谁是谁可能是件好事。