对于java中的readUTF和writeUTF的注意事项

来源:互联网 发布:妙味课堂js课后练习 编辑:程序博客网 时间:2024/06/05 11:47

java中的DataInputStream和DataOutputStream提供的方法readUTF和writeUTF,它的用法就不说了,只提醒一下他们的注意事项,这两个方法如果不再循环中进行读写操作,那么,他们在进行完一次读写操作后就会自动关闭,这是我在写一个聊天室的时候遇到的,最终的解决方法是:每次调用事件响应时现在该事件的函数内重新初始化DataInputStream和DataOutputStream。

例如:



jbtnSend.addActionListener
(
new ActionListener()
{


@Override
public void actionPerformed(ActionEvent e) 
{
String currentFriend=jlblCurrentFriend.getText();
String commandServer;
String speaker;
String speakerIndex;
String receiver;
String receiverIndex;
String messageToServer;
speakerIndex=index+"\n";
speaker=(index+101+"").substring(1)+" "+nickName+"\n";
if(currentFriend.equals("00所有人"))
{
commandServer="all\n";
messageToServer=commandServer+speaker+jtxtMessage.getText();
jtxaChatContent.append("你向所有人喊道:"+jtxtMessage.getText()+"\n");
}

else
{
commandServer="sigle\n";
receiver=jlblCurrentFriend.getText()+"\n";
receiverIndex=receiver.substring(0, 2);
receiverIndex=(Integer.parseInt(receiverIndex)-1)+"\n";
messageToServer=commandServer+speakerIndex+speaker+receiverIndex+receiver+jtxtMessage.getText();
jtxaChatContent.append("你对"+currentFriend+"说:"+jtxtMessage.getText()+"\n");
}

try 
{
Socket s = new Socket("localhost",54188);
out=new DataOutputStream(s.getOutputStream());
out.writeUTF(messageToServer);
jtxtMessage.setText("");
} catch (IOException e1) 
{
// TODO 自动生成的 catch 块

e1.printStackTrace();
}


}

}
);

0 0
原创粉丝点击