Java 为什么我不能使用DataOutputStream两次?
我曾两次尝试向服务器发送消息,但始终出错。我不知道我该怎么做才能使这件事成功。我一直在这行“msgToServer.witeBytes(“GETACCESS”+jTextFieldUsername.getText()+“”+jTextFieldPassword.getText()+“\n”)上出错 客户: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
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");
}
如果你不告诉我们你犯了什么错误,我们帮不了你多少忙。