※ 引述《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