作者del680202 (飘落的樱花)
看板java
标题Re: [问题] 请教Socket使用上的问题
时间Sat Jun 2 17:37:39 2007
※ 引述《superkeller (什麽都不管)》之铭言:
: 程式po上来看看
: 有可能你对socket同时建了二个outputstream(照理说只有一个refference)
: 我学艺不精,谨供参考.
: ※ 引述《del680202 (飘落的樱花)》之铭言:
: : 小弟想写一个模拟聊天室的功能
: : 我client的类别有一个Socket
: : 我一开始先用Botton1他跟Server沟通 通知Server 使用者登入
: : 之後我Socket没有关他 希望保持用同一个Socket来跟Server作沟通
: : 但是我想再次用Botton 呼叫 Socket.getOutputStream的方法写资料给Server的时候
: : 他却发生SocketException的例外
: : 似乎是说我的Socket已经关闭
: : 但是Connection却还保持着
: : 但是我并没有做close的动作...
: : 请问是为什麽?
这是client的 部分程式码
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
client=new Socket("127.0.0.1",44445);
// client.connect(client.getRemoteSocketAddress());
dos=new ObjectOutputStream(client.getOutputStream());
dos.writeInt(1);
dos.writeObject(name+":"+this.jTextField2.getText());
//------------------------- Send end
/* this.jTextArea1.append(client.getRemoteSocketAddress()+"");
dis=new ObjectInputStream(client.getInputStream());
String aline=(String)dis.readObject();
this.jTextArea1.append(aline+"\n");
//------------------------ Read end
dis.close();*/
dos.close();
client.close();
}catch(Exception e){ this.jTextArea1.append(e.toString());}
} private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
client=new Socket("127.0.0.1",44445);
// client.connect(client.getRemoteSocketAddress());
dos=new ObjectOutputStream(client.getOutputStream());
dos.writeInt(1);
dos.writeObject(name+":"+this.jTextField2.getText());
//------------------------- Send end
/* this.jTextArea1.append(client.getRemoteSocketAddress()+"");
dis=new ObjectInputStream(client.getInputStream());
String aline=(String)dis.readObject();
this.jTextArea1.append(aline+"\n");
//------------------------ Read end
dis.close();*/
dos.close();
client.close();
}catch(Exception e){ this.jTextArea1.append(e.toString());}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
client=new Socket("127.0.0.1",44445);
dos=new ObjectOutputStream(client.getOutputStream());
name=this.jTextField1.getText();
dos.writeInt(0);
dos.writeObject(this.jTextField1.getText());
//--------------------------------------------
dos.close();
ObjectInputStream dis=new ObjectInputStream(client.getInputStream());
this.jTextArea1.append((String)dis.readObject());
// client.close();
}catch(Exception e){
this.jTextArea1.setText(e.toString()+"QQ");
}
this.jPanel1.setVisible(false);
this.jPanel2.setBounds(0,0,400,400);
this.jPanel2.setVisible(true);
}
某些部分注解起来 是测试用的
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.225.116.220