Java 为什么我不能使用DataOutputStream两次?

Java 为什么我不能使用DataOutputStream两次?,java,tcp,client,tcpclient,dataoutputstream,Java,Tcp,Client,Tcpclient,Dataoutputstream,我曾两次尝试向服务器发送消息,但始终出错。我不知道我该怎么做才能使这件事成功。我一直在这行“msgToServer.witeBytes(“GETACCESS”+jTextFieldUsername.getText()+“”+jTextFieldPassword.getText()+“\n”)上出错 客户: try { s = new Socket("localhost", 6000); Socket incoming; inc

我曾两次尝试向服务器发送消息,但始终出错。我不知道我该怎么做才能使这件事成功。我一直在这行“msgToServer.witeBytes(“GETACCESS”+jTextFieldUsername.getText()+“”+jTextFieldPassword.getText()+“\n”)上出错

客户:

try {
        s = new Socket("localhost", 6000);

        Socket incoming;
        incoming = s;
     
        msgFromServer = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
        msgToServer = new DataOutputStream(incoming.getOutputStream());

        msgToServer.writeBytes("LOGIN "+jTextFieldUsername.getText()+" "+jTextFieldPassword.getText()+"\n");
        
        String result;
        result = msgFromServer.readLine();

        if(result.equals("TRUE")){
            JOptionPane.showMessageDialog(null,"Client Access is granted");
        }
        else if(result.equals("False")){
            JOptionPane.showConfirmDialog(this, "Client Access is not granted");
        }
        msgToServer.writeBytes("GETACCESS"+ jTextFieldUsername.getText() + " "+ jTextFieldPassword.getText() + "\n");
        String h1;
        h1 = msgFromServer.readLine();
        JOptionPane.showConfirmDialog(this, "hl: "+h1);
        if(h1.equals("Teacher")){
            
            refreshTable(2);
            JOptionPane.showConfirmDialog(this, "You were granted as a lecturer");
        }
        else if(h1.equals("Student")){
            refreshTable(1);
            JOptionPane.showConfirmDialog(this, "You were granted as a student");
        }

    } catch (IOException ex) {
        Logger.getLogger(presensiClientFrame.class.getName()).log(Level.SEVERE, null, ex);
    }
我的错误:

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:161)
at java.io.BufferedReader.readLine(BufferedReader.java:324)
at java.io.BufferedReader.readLine(BufferedReader.java:389)

//..

服务器阻塞直到客户端连接到它,然后再次阻塞以侦听来自客户端的消息,在单个消息之后,它关闭连接,因为代码不处理连续性。要保持持续的通信活动,您需要执行读、写操作

            String inputLine;
            while ((inputLine = msgFromServer.readLine()) != null) {
                if (".".equals(inputLine)) {
                    out.println("bye");
                    break;
                }
                msgToServer.writeBytes("GETACCESS"+ jTextFieldUsername.getText() + " "+ jTextFieldPassword.getText() + "\n");
            }

如果你不告诉我们你犯了什么错误,我们帮不了你多少忙。