import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.*; import java.net.*; public class HeartClient extends Frame { /* * 成員方法出場... */ private TextField tfText; private TextArea taContent; private Socket s; private DataOutputStream dos; private DataInputStream dis; /** * 注意,入口... ^^ * @param args */ public static void main(String[] args) { new HeartClient().launchFrame(); } /** * Loading GU */ public void launchFrame(){ tfText = new TextField(); taContent = new TextArea(); this.setSize(300,300); this.setLocation(300,300); this.tfText.addActionListener(new TFListener()); this.add(tfText,BorderLayout.SOUTH); this.add(taContent,BorderLayout.NORTH); this.addWindowListener(new WindowAdapter(){ @Override public void windowClosing(WindowEvent e) { System.exit(0); }}); this.pack(); this.connect(); this.setVisible(true); } /** * 我在努力地串連伺服器中... */ public void connect() { try { s = new Socket("127.0.0.1",1720); dos = new DataOutputStream(s.getOutputStream()); dis = new DataInputStream(s.getInputStream()); new Thread(new SendThread()).start(); // dos.writeUTF("Hello,i find u!"); } catch (UnknownHostException e) { System.out.println("UnknownHostException"); e.printStackTrace(); } catch (IOException e) { System.out.println("IOException"); e.printStackTrace(); }finally{ //關閉啥尼... } } /** * 額不會傻等著tfText(TextField tfText的監聽器類) */ class TFListener implements ActionListener{ private String str; @Override public void actionPerformed(ActionEvent e) { str = tfText.getText().trim(); tfText.setText(""); try { dos.writeUTF(str); } catch (IOException e1) { System.out.println("IOException"); e1.printStackTrace(); } } } /** * 用戶端接收訊息的線程呦... * */ class SendThread implements Runnable{ private String str; private boolean iConnect = false; public void run(){ iConnect = true; recMsg(); } /** * 訊息,看招,哪裡跑...(用戶端接收訊息的實現) * @throws IOException */ public void recMsg() { try { while(iConnect){ str = dis.readUTF(); taContent.setText(str); } } catch (IOException e) { e.printStackTrace(); } } } } |