|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
一个很简朴的局域网聊天工具的服务器端 /* * Created on 2005-3-18 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package netChat; import javax.swing.*; import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; /** * @author AppleTian * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class server extends JFrame { private JTextField messageBox; private JTextArea infBox; private ObjectInputStream input; private ObjectOutputStream output; private ServerSocket server; private Socket serverSocket; public server(){ super("server"); Container c=getContentPane(); messageBox=new JTextField(""); messageBox.setEnabled(false); messageBox.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ sendData(e.getActionCommand()); } }); c.add(messageBox,BorderLayout.NORTH); infBox=new JTextArea(); infBox.setFont(new Font("Serif",Font.BOLD,12)); c.add(new JScrollPane(infBox),BorderLayout.CENTER); setSize(500,400); setVisible(true); } /** * @param actionCommand */ protected void sendData(String actionCommand) { try{ output.writeObject(actionCommand); output.flush(); infBox.append("/nsend<<"+actionCommand+">> to client.../n"); } catch(IOException e){ infBox.append("/nExceptionIOInSendDataFunction..."); } } public void runServer(){ try{ server=new ServerSocket(5000,100); while(true){ waitForConnection(); getStreams(); processConnection(); closeConnection(); } } catch(EOFException e){ infBox.append("/nError in runServerFuction"); } catch(IOException e){ e.printStackTrace(); } } /** * */ private void closeConnection() throws IOException { infBox.append("/nclose connection..."); messageBox.setEnabled(false); output.close(); input.close(); serverSocket.close(); } /** * */ private void processConnection() throws IOException { String mg="/nconnection succeful"; messageBox.setEnabled(true); output.writeObject(mg); output.flush(); do{ try{ mg=( String )input.readObject(); infBox.append("/nsend to client: "+mg); infBox.setCaretPosition(infBox.getText().length()); } catch(ClassNotFoundException e){ infBox.append("/n Unkown class received..."); } }while(mg!="end"); } /** * */ private void getStreams() throws IOException { output=new ObjectOutputStream(serverSocket.getOutputStream()); output.flush(); input=new ObjectInputStream(serverSocket.getInputStream()); infBox.append("/nGet Streams..."); } /** * */ private void waitForConnection() throws IOException { infBox.append("wait for a Client..."); serverSocket=server.accept(); infBox.append("connected by"+serverSocket.getInetAddress().getHostName()); } public static void main(String[] args) { server my=new server(); my.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); my.runServer(); } } 客户端 /* * Created on 2005-3-18 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package netChat; import javax.swing.*; import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; /** * @author AppleTian * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class client extends JFrame { private JTextField messageBox; private JTextArea infBox; private ObjectInputStream input; private ObjectOutputStream output; private String mg=""; private String chatServer; private Socket client; public client(String host){ super("client...."); chatServer=host; Container c=getContentPane(); messageBox=new JTextField(); messageBox.setEnabled(false); messageBox.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ sendData(e.getActionCommand()); } }); c.add(messageBox,BorderLayout.NORTH); infBox=new JTextArea(); c.add(infBox,BorderLayout.CENTER); setSize(500,400); setVisible(true); } /** * @param actionCommand */ protected void sendData(String actionCommand) { try{ mg=messageBox.getText(); output.writeObject(mg); output.flush(); infBox.append("/nsend to server: "+mg); }catch(IOException e){ infBox.append("/nIOException in sendData.."); } } public void runClient(){ try{ connectToServer(); getStreams(); processConnection(); closeConnection(); }catch(IOException e){ infBox.append(e.toString()); } } /** * */ private void closeConnection()throws IOException { // TODO Auto-generated method stub infBox.append("/nclose..."); output.close(); input.close(); client.close(); } /** * */ private void processConnection() throws IOException{ // TODO Auto-generated method stub messageBox.setEnabled(true ); do{ try{ mg=(String )input.readObject(); infBox.append("/nFrom server: "+mg); infBox.setCaretPosition(infBox.getText().length()); }catch(ClassNotFoundException e){ infBox.append("classNotFound.../n"); } }while(mg!="end"); } /** * */ private void getStreams() throws IOException { // TODO Auto-generated method stub output=new ObjectOutputStream(client.getOutputStream()); output.flush(); input=new ObjectInputStream(client.getInputStream()); infBox.append("get the IO Stream../n"); } /** * */ private void connectToServer() throws IOException { // TODO Auto-generated method stub infBox.append("try connecting to server.../n"); client=new Socket(InetAddress.getByName(chatServer),5000); infBox.append("connect to server:"+client.getInetAddress().getHostName()+"/n"); } public static void main(String[] args) { client p; if(args.length==0) p=new client("127.0.0.1"); else p=new client(args[0]); p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); p.runClient(); } } 返回类别: 教程 上一教程: J2SE 5.0实例---枚举 下一教程: 给所有刚学JAVA以及常来此版的兄弟 您可以阅读与"java.net 操练"相关的教程: · Java Network Programming 笔记(2) · 一个用来访问http服务器的东西。功能类似于java.net中的那个。但要强。 · java.net.URLClassLoader翻译 · java.net.URLEncoder翻译 · JAVA模仿.NET的连接池 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |