Re: [問題] 請教Socket使用上的問題
※ 引述《del680202 (飄落的櫻花)》之銘言:
: ※ 引述《superkeller (什麼都不管)》之銘言:
: : 程式po上來看看
: : 有可能你對socket同時建了二個outputstream(照理說只有一個refference)
: : 我學藝不精,謹供參考.
: 這是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);
: }
: 某些部分註解起來 是測試用的
不懂為什麼你怎麼每次做一個action都create一個socket
你的socket連線和OutputStream應該要一開始就做好
actionPerformed只是做write東西出去而已
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.105.36
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):