关于控制符号

时间:2013-11-03 08:11:11

标签: java string sockets

您好。

我有这个代码,例如,它正常工作:

   class main {
           public static void main(String args[]) throws Exception {
        Socket socks = new Socket("whois.internic.net", 43);
    InputStream in = socks.getInputStream();
    OutputStream out = socks.getOutputStream();
    String str    ;
    str= "MHProfessional.com"+"\n";
    byte buf[] = str.getBytes();
    out.write(buf);

    int c;
    while ((c = in.read()) != -1) {
        System.out.print((char) c);
    }
    //socks.close();

但是当我删除它时:+"\n"。然后我的程序ID不工作,我看到空白屏幕。所以为什么?

1 个答案:

答案 0 :(得分:3)

因为protocol specification表示

  

WHOIS服务器在TCP端口43上侦听来自WHOIS的请求      客户端。 WHOIS客户端向WHOIS服务器发出文本请求,      然后WHOIS服务器回复文本内容。所有要求都是      以ASCII CR终止,然后是ASCII LF。

因此服务器在回复之前等待行尾。所以,如果你从不发送行尾,你永远不会得到答案。

请注意,服务器甚至可能拒绝了您的请求,因为您正在发送LF,但之前没有发送CR。请求应为"MHProfessional.com\r\n"