◆用UDP編寫網絡聊天程序
/**?* @(#)Chat1.java
?*
?* Chat1 application
?*
?* @author
?* @version 1.00 2007/1/29
?*/
?import java.awt.List;
?import java.awt.*;
?import java.awt.event.*;
?import java.net.*;
?import java.util.*;
public class Chat1 extends Frame
{
?List lst=new List(6);
?TextField tfIP=new TextField(15);
?TextField tfData=new TextField(20);
?DatagramSocket ds=null;
??? public Chat1()
??? {
??? ?this.addWindowListener(new WindowAdapter()
??? ?{
??? ??public void windowClosing(WindowEvent e)
??? ??{
??? ???ds.close();
??? ???e.getWindow().dispose();
??? ???System.exit(0);
??? ??}
??? ?});
??? ?Panel pl=new Panel();
??? ?pl.setLayout(new BorderLayout());
??? ?pl.add(tfIP,BorderLayout.WEST);
??? ?pl.add(tfData,BorderLayout.EAST);
??? ?this.add(lst,BorderLayout.CENTER);
??? ?this.add(pl,BorderLayout.SOUTH);
??? ?
??? ?try
??? ?{
????ds=new DatagramSocket(3000);
??? ?}
??? ?catch(Exception e)
??? ?{
??? ??e.printStackTrace();
??? ?}
??? ?
??? ?new Thread(new Runnable()
??? ?{
??? ??public void run()
??? ??{
??? ???byte []buf=new byte [1024];
??? ???DatagramPacket dp=new DatagramPacket(buf,1024);
??? ???while(true)
??? ???{
??? ????try
??? ????{
??? ?????ds.receive(dp);
??? ?????Calendar c=Calendar.getInstance();
??? ?????lst.add(new String(dp.getData(),0,dp.getLength())+"??? from: "+
??? ??????dp.getAddress().getHostAddress()+":"+dp.getPort()+new Date(),0);?
??? ????}
??? ????catch(Exception e)
??? ????{
??? ?????if(ds.isClosed()==false)
??? ?????{
??? ??????e.printStackTrace();
??? ?????}?
??? ????}?
??? ???}
??? ??}
??? ?}).start();
??? ?
??? ?tfData.addActionListener(new ActionListener()
??? ?{
??? ??public void actionPerformed(ActionEvent e)
??? ??{
??? ???byte []buf=tfData.getText().getBytes();
??? ???try
??? ???{
??? ????DatagramPacket dp=new DatagramPacket(buf,buf.length,
??? ?????InetAddress.getByName(tfIP.getText()),3000);
??? ????ds.send(dp);
??? ???}
??? ???catch(Exception ex)
??? ???{
??? ????ex.printStackTrace();
??? ???}
??? ???//lst.add(tfData.getText());
??? ???tfData.setText("");
??? ???
??? ??}
??? ?});
??? ?
??? ?
??? }
??? public static void main(String[] args)
??? {
??? ?
??? ?// TODO, add your application code
??? ?System.out.println("Hello World!");
??? ?Chat1 mainFrame=new Chat1();
??? ?mainFrame.setTitle("Chat");
??? ?mainFrame.setBounds(300,200,300,400);
??? ?mainFrame.setVisible(true);
??? ?mainFrame.setResizable(false);
??? }
}
posted on 2007-01-29 20:31 大頭劍客 閱讀(297) 評論(0) 編輯 收藏 所屬分類: 學習筆記