chat.java

来自「java 通讯程序」· Java 代码 · 共 76 行

JAVA
76
字号
import java.net.*;
import java.awt.*;
import java.awt.event.*;

class Chat extends Frame {
	List list=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){}
		this.add(list,"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);
		   	    	    list.add(new String(/*dp.getData()*/buf,0,dp.getLength()) 
		   	    	                 +"  来自:"+dp.getAddress().getHostAddress()+" :"+dp.getPort(),0);
		   	           }catch(Exception ex)
		   	             {
		   	             	if(!ds.isClosed())
		   	             	{
		   	             		ex.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);
				list.add(new String(/*dp.getData()*/buf,0,dp.getLength()),0);
			    }catch(Exception ex){ex.printStackTrace();}
				tfDATA.setText("");
			}
		});
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
			    ds.close();
				dispose();
				System.exit(0);
			}
		});
	}

	public static void main(String args[]) {
		System.out.println("Starting Chat...");
		Chat mainFrame = new Chat();
		mainFrame.setSize(300, 400);
		mainFrame.setTitle("简简单单聊天");
		mainFrame.setVisible(true);
		mainFrame.setResizable(false);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?