⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chat.java

📁 利用Socket编写的java聊天程序
💻 JAVA
字号:
/**
 * Chat application 1.0
 *
 * @author 数字城堡
 * @version 1.00 07/04/28
 */
 import java.awt.*;
 import java.awt.event.*;
 import java.net.*;
 
public class Chat extends Frame {
	List lst = new List(6);            //显示输入信息
	TextField tfIP = new TextField(15);//输入IP
	TextField tfData = new TextField(20);//输入话语
	DatagramSocket ds = null;
	
    public Chat()
    {
    	try
    	{
    		ds = new DatagramSocket(3000);//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()*/buf,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;
    			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();
    			}
    			
    			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("Chat 1.0    数字城堡");
    	mainFrame.setVisible(true);
    	mainFrame.setResizable(false);
    	
    
    }
}

⌨️ 快捷键说明

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