开发工具:
文件大小: 9kb
下载次数: 0
上传时间: 2009-12-12
详细说明: 服务器端: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.net.*; public class Server extends JFrame implements ActionListener{ JPanel contentPane; JLabel jLabel2 = new JLabel(); JTextField jTextField2 = new JTextField("4700"); JButton jButton1 = new JButton(); JLabel jLabel3 = new JLabel(); JTextField jTextField3 = new JTextField(); JButton jButton2 = new JButton(); JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); Serv erSocket server = null; Socket socket = null;BufferedReader instr =null;PrintWriter os=null ; //Construct the frame public Server() { jbInit(); } class MyThread extends Thread{//该线程负责接受数据 public void run(){ try{ while(true){ this.sleep(100); instr= new BufferedReader(new InputStreamReader(socket.getInputStream())); if(instr.ready()){ //检查是否有数据 jTextArea1.append("客户端: "+instr.readLine()+"\n"); } } }catch(Exception ex){} } } public void actionPerformed(ActionEvent e){ if(e.getSource()==jButton1){ int port=Integer.parseInt(jTextField2.getText().trim()); listenClient(port); } if(e.getSource()==jButton2){ String s=this.jTextField3.getText().trim(); sendData(s); } } private void listenClient(int port){//侦听 try{ if(jButton1.getText().trim().equals("侦听")){ server = new ServerSocket(port); jButton1.setText("正在侦听..."); socket=server.accept();//等待,一直到客户端连接才望下执行 sendData("已经成功连接。。。"); jButton1.setText("正在聊天..."); jTextArea1.append("客户端已经连接到服务器\n"); MyThread t=new MyThread(); t.start(); } }catch(Exception ex){ } } private void sendData(String s){//发送数据 try{ os= new PrintWriter(socket.getOutputStream()); os.println(s); os.flush(); if(!s.equals("已经成功连接。。。")) this.jTextArea1.append("Server:"+s+"\n"); }catch(Exception ex){ } } //Component initialization private void jbInit() { contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(null); this.setSize(new Dimension(540, 340)); this.setTitle("服务器"); jLabel2.setBounds(new Rectangle(22, 27, 72, 28)); jLabel2.setText("端口号"); jLabel2.setFont(new java.awt.Font("宋体", 0, 14)); jTextField2.setBounds(new Rectangle(113, 27, 315, 24)); jButton1.setBounds(new Rectangle(440, 28, 73, 25)); jButton1.setFont(new java.awt.Font("Dialog", 0, 14)); jButton1.setBorder(BorderFactory.createEtchedBorder()); jButton1.setActionCommand("jButton1"); jButton1.setText("侦听"); jLabel3.setBounds(new Rectangle(23, 57, 87, 28)); jLabel3.setText("请输入信息"); jLabel3.setFont(new java.awt.Font("宋体", 0, 14)); jTextField3.setBounds(new Rectangle(114, 60, 314, 24)); jTextField3.setText(""); jButton2.setText("发送"); jButton2.setActionCommand("jButton1"); jButton2.setBorder(BorderFactory.createEtchedBorder()); jButton2.setFont(new java.awt.Font("Dialog", 0, 14)); jButton2.setBounds(new Rectangle(440, 58, 73, 25)); jScrollPane1.setBounds(new Rectangle(23, 92, 493, 189)); contentPane.add(jTextField2, null); contentPane.add(jButton1, null); contentPane.add(jLabel3, null); contentPane.add(jTextField3, null); contentPane.add(jButton2, null); contentPane.add(jScrollPane1, null); contentPane.add(jLabel2, null); jScrollPane1.getViewport().add(jTextArea1, null); jButton1.addActionListener(this); jButton2.addActionListener(this); this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ try{ socket.close(); instr.close(); System.exit(0); }catch(Exception ex){ } } }); } public static void main(String arg[]){ JFrame.setDefaultLookAndFeelDecorated(true); Server frm=new Server(); frm.setVisible(true); } } 客户端: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.net.*; public class Client extends JFrame implements ActionListener{ JPanel contentPane; JLabel jLabel1 = new JLabel(); JTextField jTextField1 = new JTextField("127.0.0.1"); JLabel jLabel2 = new JLabel(); JTextField jTextField2 = new JTextField("4700"); JButton jButton1 = new JButton(); JLabel jLabel3 = new JLabel(); JTextField jTextField3 = new JTextField(); JButton jButton2 = new JButton(); JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); BufferedReader instr =null; Socket socket = null; PrintWriter os=null; public Client() { jbInit(); } class MyThread extends Thread{ public void run(){ try{ os=new PrintWriter(socket.getOutputStream()); instr=new BufferedReader(new InputStreamReader(socket.getInputStream())); while(true){ this.sleep(100); if(instr.ready()){ jTextArea1.append("服务器: " +instr.readLine()+"\n"); } } }catch(Exception ex){ } } } public void actionPerformed(ActionEvent e){ if(e.getSource()==jButton1){ String ip=jTextField3.getText().trim(); int port=Integer.parseInt(jTextField2.getText().trim()); connectServer(ip,port); } if(e.getSource()==jButton2){ String s=this.jTextField3.getText().trim(); sendData(s); } } private void connectServer(String ip,int port){//连接 try{ if(jButton1.getText().trim().equals("连接")){ jButton1.setText("连接服务器..."); socket=new Socket(ip,port); jButton1.setText("正在聊天"); MyThread t=new MyThread(); t.start(); } }catch(Exception ex){ } } private void sendData(String s){//发送数据 try{ os = new PrintWriter(socket.getOutputStream()); os.println(s); os.flush(); this.jTextArea1.append("Server:"+s+"\n"); }catch(Exception ex){ } } private void jbInit() { contentPane = (JPanel) this.getContentPane(); jLabel1.setFont(new java.awt.Font("宋体", 0, 14)); jLabel1.setText("服务器名称"); jLabel1.setBounds(new Rectangle(20, 22, 87, 28)); contentPane.setLayout(null); this.setSize(new Dimension(540, 340)); this.setTitle("客户端"); jTextField1.setBounds(new Rectangle(114, 26, 108, 24)); jLabel2.setBounds(new Rectangle(250, 25, 72, 28)); jLabel2.setText("端口号"); jLabel2.setFont(new java.awt.Font("宋体", 0, 14)); jTextField2.setBounds(new Rectangle(320, 27, 108, 24)); jButton1.setBounds(new Rectangle(440, 28, 73, 25)); jButton1.setFont(new java.awt.Font("Dialog", 0, 14)); jButton1.setBorder(BorderFactory.createEtchedBorder()); jButton1.setActionCommand("jButton1"); jButton1.setText("连接"); jLabel3.setBounds(new Rectangle(23, 57, 87, 28)); jLabel3.setText("请输入信息"); jLabel3.setFont(new java.awt.Font("宋体", 0, 14)); jTextField3.setBounds(new Rectangle(114, 60, 314, 24)); jButton2.setText("发送"); jButton2.setActionCommand("jButton1"); jButton2.setBorder(BorderFactory.createEtchedBorder()); jButton2.setFont(new java.awt.Font("Dialog", 0, 14)); jButton2.setBounds(new Rectangle(440, 58, 73, 25)); jScrollPane1.setBounds(new Rectangle(23, 92, 493, 189)); contentPane.add(jLabel1, null); contentPane.add(jTextField1, null); contentPane.add(jLabel2, null); contentPane.add(jTextField2, null); contentPane.add(jButton1, null); contentPane.add(jLabel3, null); contentPane.add(jTextField3, null); contentPane.add(jButton2, null); contentPane.add(jScrollPane1, null); jScrollPane1.getViewport().add(jTextArea1, null); jButton1.addActionListener(this); jButton2.addActionListener(this); this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ try{ socket.close();instr.close();os.close();System.exit(0); }catch(Exception ex){ } } }); } public static void main(String arg[]){ JFrame.setDefaultLookAndFeelDecorated(true); Client frm=new Client(); frm.setVisible(true); } } 先启动服务器端,侦听端口,再启动客户端,就行了 ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.