2015-03-23 6 views
0

У меня есть два Jtextarea в моем коде. У меня есть кнопка подключения, и при нажатии на соединение она подключается к серверу. У меня есть кнопка отправки. Когда я набираю что-либо в первой jtextarea и нажимаю кнопку отправки, он должен быть возвращен и напечатан во втором jtextarea.отправка и получение данных через сокет

Моя проблема в том, что когда я отправляю данные в первый раз, я получаю обратно данные правильно, но когда я отправляю данные во второй раз, я не получаю их обратно. Когда я отправляю третью информацию, я получаю обратно второй данные, и это продолжается.

, пожалуйста, помогите. Заблаговременно Это мой код.

public class send extends JFrame 
{ 

    Socket s; 

    int port=3000; 

    String host="192.168.1.3" 

    public static void main(String[] args) { 

    EventQueue.invokeLater(new Runnable() { 

     public void run(){ 
     send s=new send(); 
     s.setvisible(true); 
     } 
    }); 

    } 

public send() { 


    setDrfaultCloseOperation(EXIT_ON_CLOSE); 

    setResizable(false); 

    setBounds(100,100,400,600); 

    Jpanel ContentPane=new Jpanel(); 

    contentPane.setBorder(new EmptyBorder(5,5,5,5); 

    setContentPane(contentpane); 


    contentPane.setLayout(null); 

    JButton connect=new Jbutton("connect"); 

    connect.setBounds(15,10,100,40); 

    connect.addActionListener(new ActionListener(){ 

     public void actionPerformed(ActionEvent e{ 

      try{ 

      addr=InetAddress.getByName(host); 
      s=new Socket(addr,port); 
      } 
      catch(UnknownHostException e1) 
      { 
      e1.printStackTrace(); 
      } 
      catch(IOException e2) 
      { 
      e2.printStackTrace(); 
      } 
     } 
     }); 
    contentPane.add(connect); 

    JTextArea area=new JtextArea(); 
    area.setBounds(15,70,100,40); 
    contentPane.add(area); 

    JButton btn=new JButton("send"): 
    btn.setBounds(15,70,170,80); 
    btn.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      if(!(area.getText().trim.isEmpty()) 
      { 
      try 
       { 
       PrintStream ps=new PrintStream(s.getOutputStream()); 
       ps.println(area.getText()); 
       InputStreamReader in=new InputStreamReader(s.getInputStream()); 
       BufferedReader br=new BufferedReader(in); 

       String msg=br.readLine(); 
       if(msg!=null) 
        { 
        txt.append("s:"+area.getText()+"\n"); 
        txt.append(msg+"\n"); 
        area.setText(""); 
        } 
      catch(IOException e3) 
       { 
        e3.printStackTrace(); 
       } 
      } 
      } 
     }); 
    contentPane(btn); 

    JTextArea txt=new JtextArea(); 
    txt.setBounds(15,210,290,300); 
    contentPane.add(txt); 
    } 
} 
+0

может кто-нибудь сказать мне, что это ошибка – xdt

ответ

0

Просто промывать поток:

ps.println(area.getText()); 
ps.flush(); 
+0

пытался, но не работает – xdt

Смежные вопросы