2006-05-16 (5) Frame


import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.lang.*;
public class Chat extends Frame
{
 List lst=new List(6);
 TextField   tfIP=new TextField(15);
 TextField  tfData=new TextField(20);
 DatagramSocket ds=null;
 public Chat()
 {
  try
  {
   ds=new DatagramSocket(3000);
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
  
  this.add(lst,"Center");
  Panel p=new Panel();
  this.add(p,"South");
  p.setLayout(new BorderLayout());
  p.add(tfIP,"West");
  p.add(tfData,"East");
  new Thread(
    new Runnable()
    {
     public void run()
     {
      byte []buf=new byte [1024];
      DatagramPacket dp =new DatagramPacket(buf,1024);
      while(true)
      {
       try
       {
        ds.receive(dp);
        lst.add(new String(dp.getData(),0,dp.getLength())
          +" from "+dp.getAddress().getHostAddress()
          +":"+dp.getPort(),0);
       }
       catch(Exception e)
       {
        if (!ds.isClosed())
        {
         e.printStackTrace();
        }
        
       }
      }
     }
    }
  ).start();
  
  tfData.addActionListener(new ActionListener()
    {
     public void actionPerformed(ActionEvent e)
     {
      //
      byte[] buf;
      try
      {
       buf=tfData.getText().getBytes();
       DatagramPacket dp =new DatagramPacket(
         buf,buf.length,InetAddress.getByName(tfIP.getText()),3000);
       
       ds.send(dp);
       tfData.setText("");
      }
      catch(Exception ee)
      {
       ee.printStackTrace();
      }

     }
    }
  );
  addWindowListener
  (
    new WindowAdapter()
    {
     public void windowClosing(WindowEvent e)
     {
      dispose();
      ds.close();
      System.exit(0);
     }
    }
  );
 }
 public static void main(String[] args)
 {
  Chat myChat=new Chat();
  myChat.setSize(300,400);
  myChat.setTitle("Chat");
  myChat.setVisible(true);
  myChat.setResizable(false);
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值