Java套接字无法正确显示收到的输入

Java套接字无法正确显示收到的输入,java,python,sockets,network-programming,java.util.scanner,Java,Python,Sockets,Network Programming,Java.util.scanner,我正在尝试获取一个Java客户端程序来接收来自服务器的输入。但是,代码无法获取输入并将其打印出来。很好。 问题是接收到的输入没有打印到控制台。 下面是创建套接字的部分 Socket ss = new Socket(host,port); String input; Scanner in; in = new Scanner(ss.getInputStream()); while(true) { input = in.next(); System.out.print(input +

我正在尝试获取一个Java客户端程序来接收来自服务器的输入。但是,代码无法获取输入并将其打印出来。很好。 问题是接收到的输入没有打印到控制台。 下面是创建套接字的部分

Socket ss = new Socket(host,port);
String input;
Scanner in;
in = new Scanner(ss.getInputStream());
while(true)
{
    input = in.next();
    System.out.print(input + "\n");
    if("quit".equalsIgnoreCase(input));
        {
            in.close();
            ss.close();
            return;
        }
}
这是我所有的代码

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

public class connect 
{
    static int port;
    static String host;
    public static void start(String host, int port)
    {
        while(true)
        {
        try 
        {
            Socket ss = new Socket(host,port);
            String input;
            Scanner in;
            in = new Scanner(ss.getInputStream());
            while(true)
            {
                input = in.next();
                System.out.print(input + "\n");
                if("quit".equalsIgnoreCase(input));
                {
                    in.close();
                    ss.close();
                    return;
                }
            }
        } 
        catch (UnknownHostException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        catch (IOException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }
    }
    public static void main(String[] args)
    {
        String check;
        do
        {
        @SuppressWarnings("resource")
        Scanner sc = new Scanner(System.in);

        System.out.println("Hello, welcome to the client");
        String banner = "-";
        int x = 0;

        while(x<60)
        {
            banner += "-";
            x++;
        }
        System.out.println(banner);
        System.out.print("\n\nPlease Enter the ip address to connect to\n>>");
        host = sc.next();
        System.out.println("We are connecting to " + host);
        System.out.print("\n" + banner + "\nEnter the port\n>>");
        port = sc.nextInt();
        System.out.println("Connecting to\nhost->" + host + "\nport->" + port);
        System.out.println("Enter 'Done' to continue, any to reset");
        check = sc.next();
        }while(!"Done".equals(check));
        start(host,port);
        System.out.println("Finished");
    }
}
此代码在客户端的输出应为

-->你好

-->世界


应该打印Hello,然后打印World,然后等待更多输入。但是,在服务器关闭之前,不会显示输出。服务器关闭时,将显示python文档中的HelloWorld,用于:

应用程序负责检查所有数据是否已发送;如果仅传输了部分数据,则应用程序需要尝试传输其余数据

如果您不想担心检查数据是否已发送,则使用此选项,因为它将继续尝试发送数据,直到所有数据都已发送或出现错误为止

Scanner
将根据分隔符(我认为默认情况下是空白)标记数据。将仅在达到指定的分隔符字符时返回数据:

完整标记的前面和后面是与分隔符模式匹配的输入


确保在接收数据时考虑到这一点(您发送的数据需要指定分隔符,即扫描仪的分隔符)。您可以通过或更改分隔符。您应该在每个单词后添加空格,。例:
。。。conn.send(“Hello”)conn.send(“”)conn.send(“World”)…
这将解决空白问题,但不是输入未被替换的事实scanner类正在等待标记(默认情况下,它是一个以空白分隔的文本块),因此如果需要这些标记,则需要发送
“Hello Word”
(请注意结尾空格)。当您退出服务器时,Read-up就可以工作了,因为这样会终止连接,扫描程序会看到EOF。如果您执行了
conn.shutdown(socket.sockrdwr)
操作,它也会工作,但随后连接会关闭。这两个操作我都很累,直到服务器端套接字关闭后,它才打印输出。我现在明白您的意思了。它终于成功了。谢谢你
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('',443))
s.listen(1)
conn,addr=s.accept()
conn.send("Hello")
conn.send("World")