このクライアントはまだまだ欠陥がありますが、動きます。どこに問題があるかわかるでしょうか。
どんな改良をすれば便利になるでしょうか。
使う時には、Server03,Server031,Server04,Server05 を相手サーバーとして使用できます。他の人とのメッセージ交換にはServer05が優れていますが、動作テストには、Server03やServer031も使えます。
/** GUIで送受信するクライアント */ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; public class Client05 extends JFrame implements ActionListener { JButton sndbttn; JTextField sndmsg; JTextField disthost; Socket mysoc; InputStreamReader in; BufferedReader inb; OutputStreamWriter out; BufferedWriter outb; public Client05() { setDefaultCloseOperation(EXIT_ON_CLOSE); disthost = new JTextField(); sndmsg = new JTextField(); sndbttn = new JButton("送信"); setLayout(new BorderLayout()); add(disthost,BorderLayout.NORTH); add(sndmsg, BorderLayout.CENTER); add(sndbttn, BorderLayout.SOUTH); sndbttn.addActionListener(this); pack(); setVisible(true); } public void actionPerformed(ActionEvent ev) { if (ev.getSource() == sndbttn) { int PORT = 10001; try{ mysoc = new Socket( disthost.getText(), PORT ); in = new InputStreamReader(mysoc.getInputStream()); inb = new BufferedReader(in); out = new OutputStreamWriter(mysoc.getOutputStream()); outb = new BufferedWriter(out); String msg = sndmsg.getText(); outb.write( msg, 0, msg.length() ); outb.newLine(); outb.flush(); sndmsg.setText( "waiting..." ); String line; line = inb.readLine(); sndmsg.setText( line ); outb.close(); out.close(); inb.close(); in.close(); mysoc.close(); } catch( UnknownHostException e ) { System.err.println( "Host not found" ); } catch( SocketException e ) { System.err.println("Socket Error"); } catch( IOException e ) { System.err.println("IO Error"); } catch( java.lang.Exception e ){ System.out.println(e.toString()); } } } public static void main( String[] args ) { Client05 frm = new Client05(); } }
どんな問題を発見しましたか。またどのような改良があれば便利ですか。メールで知らせてください。安達<adachi@st.seiai.ed.jp> ,または 太田<otawa@st.seiai.ed.jp>まで。