UDP聊天程序

下面是一段采用UDP协议进行通信的JAVA代码,不足之处还望正。
import  java.awt. * ;
import  java.awt.event. * ;
import  java.net. * ;

// 程序的主类
public   class  Chat
{

        Frame f 
=new Frame("聊天室");        //构建聊天室框架
        TextField tfip=new TextField(15);        //设置IP地址输入框
        List lst=new List(6);                //建立输入信息列表
       
        DatagramSocket ds;
        
public Chat()
        
{
                
try
                
{
                        ds
=new DatagramSocket(3000);//开启3000端口进行信息的传递
                }
catch(Exception ex){ex.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);
                                        lst.add(
new String(buf,0,dp.getLength())+":from"+dp.getAddress().getHostAddress(),0);
                                       
                                }
catch(Exception e){e.printStackTrace();}
                               
                        }

                }

               
        }
).start();
        }

                       
        
public static void main(String[] args) {//程序入口
                Chat chat=new Chat();
                chat.init();
        }

        
public void init()        //初始化程序
        {
                f.setSize(
300,300);
                f.add(lst);
               
                Panel p
=new Panel();
                p.setLayout(
new BorderLayout());
                p.add(
"West",tfip);
                TextField tfData
=new TextField(20);        //设置信息输入框
                p.add("East",tfData);
                f.add(
"South",p);
                f.setVisible(
true);
                f.setResizable(
false);
               
               
                f.addWindowListener(
new WindowAdapter()        //添加退出处理功能
                {
                   
public void windowClosing(WindowEvent e)
                   
{
                           ds.close();
                           f.setVisible(
false);
                           f.dispose();
                           System.exit(
0);
                  
                   }

                }
);
                tfData.addActionListener(
new ActionListener()        //发送信息
                {
                        
public void actionPerformed(ActionEvent e)
                        
{
                                
byte[] buf;
                                buf
=e.getActionCommand().getBytes();
                                
try
                                
{        DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName(tfip.getText()),3000);
                       
               
                        ds.send(dp);
                }
catch(Exception ex){ex.printStackTrace();}
                    
                ((TextField)e.getSource()).setText(
" ");
                    
            }

}
);                       
        }
       
               

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值