java - 客户端不向服务器发送数据

标签 java sockets networking

即使使用这个非常基本的客户端服务器应用程序,我也遇到问题。客户端未发送数据/服务器未接收数据。我不明白问题出在哪里。我什至开始认为我对套接字一无所知。

这是服务器代码:

public class Server
{
public static void main(String args[])
{
    try{
        ServerSocket serverSocket = new ServerSocket(3000);

        Socket socket = serverSocket.accept();

        System.out.println("Client connected: "+socket.getInetAddress.toString());

        Scanner scanner = new Scanner(socket.getInputStream());

        while(true)
        {
            System.out.println(scanner.nextLine());
        }
    }catch(IOException e)
    {
        System.out.println("error");
    }
}
}

这是客户端代码:

public class Client
{
public static void main(String args[])
{
    Socket socket;
    PrintWriter printWriter;


    try {
        socket = new Socket("127.0.0.1", 3000);
        printWriter = new PrintWriter(socket.getOutputStream(), true);

        while(true)
        {
            printWriter.write("frejwnnnnnnnnnnnnnnnnnnnnnnnnosfmxdawehtcielwhctowhg,vort,hyvorjtv,h");
            printWriter.flush();
        }

    }catch(IOException e)
    {
        System.out.print("error\n");
    }

}
}

如果我在同一台计算机上运行两者,服务器会正​​确打印“客户端已连接......”,但随后不再打印。

问题是什么?

最佳答案

服务器读取下一个。客户端不发送任何行结尾。因此,服务器不可能知道该行应该结束,并且会阻塞,直到在流中找到 EOL。或者直到客户端关闭其套接字。

关于java - 客户端不向服务器发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47854993/

相关文章:

linux - Vagrant 无法自动设置静态私有(private) IP

c - 获取Linux内核模块中的接口(interface)网络掩码

java - SPOJ ADDREV 问题

java - 从 Java NIO socketchannel 读取字节直到到达标记

linux - 如何向套接字提供目标MAC地址

sockets - 为什么我们不能使用进程 ID 而不是使用我们绑定(bind)的端口

php - 有没有办法通过网页上的链接打开用户计算机上本地网络上的文件?

javascript - 如何生成预填充的可填写 PDF、更改其内容并解析内容

java - 如何在eclipse中设置java_opts

java - 如何生成具有特定范围的唯一随机数