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

📄 chatapp.java

📁 可以网络聊天 特别好用只要输入IP地址就能用了 试试吧
💻 JAVA
字号:
import java.net.*;
import java.io.*;
import javax.swing.UIManager;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ChatApp {
	boolean packFrame = false;
	public ChatApp(){
		ChatFrame frame = new ChatFrame();//设置图形用户界面
		if(packFrame){
			frame.pack();
		}
		else{
			frame.validate();
		}
//设置窗口的位置大小
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension frameSize = frame.getSize();
		if(frameSize.height> screenSize.height){
			frameSize.height = screenSize.height;
		}
		if(frameSize.width > screenSize.width){
			frameSize.width = screenSize.width;
		}
		frame.setLocation((screenSize.width - frameSize.width)/2,(screenSize.height - frameSize.height)/2);
		frame.setVisible(true);
		frame.waitforpackets();
	}
	public static void main(String[] args){
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		}
		catch(Exception e){
			e.printStackTrace();
		}
		new ChatApp();
	}

}
//创建聊天窗口
class ChatFrame extends JFrame{
	JPanel contentPane;
	Label label1 = new Label();//创建标志
	Label label2 = new Label();//同上
	TextField textField1 = new TextField();//定义输入得文本框
	TextField textField2 = new TextField();//定义输入得文本框
	Button button1 = new Button();//创建按钮
	TextArea textArea1 = new TextArea();//创建聊天区域
	DatagramPacket sendpacket,receivepacket;//创建接收发送数据包
	DatagramSocket sendsocket,receivesocket;//同上
	//使窗口上的按钮有效
                        public ChatFrame(){
		enableEvents(AWTEvent.WINDOW_EVENT_MASK);
		try{jbInit();}
		catch(Exception e){
			e.printStackTrace();
		}
	}
	private void jbInit() throws Exception{
		contentPane = (JPanel) this.getContentPane();
		label1.setText("发送信息:");
		label1.setBounds(new Rectangle(13,59,60,21));
		contentPane.setLayout(null);//布局设为空
		this.setSize(new Dimension(363,275));//设置大小
		this.setTitle("利用UDP实现聊天室");
		label2.setText("请输入对方IP地址:");
		label2.setBounds(new Rectangle(12,19,109,23));//设置其范围
		try {
			sendsocket = new DatagramSocket();
			receivesocket = new DatagramSocket(5001);
		}
		catch(SocketException se){
			se.printStackTrace();
			System.exit(0);
		}
		button1.setLabel("发送");
		button1.setBounds(new Rectangle(280,59,59,21));//设置范围
//为按钮添加监听事件处理		
button1.addActionListener(new java.awt.event.ActionListener(){
			public void actionPerformed(ActionEvent e){
				button1_actionPerformed(e);
			}
		});
		textField2.setBounds(new Rectangle(123,20,114,19));
		textArea1.setBounds(new Rectangle(11,96,333,134));
		textField1.setBounds(new Rectangle(76,57,191,19));//设置页面上内容区域的范围
		//添加初始内容都为空
                                    contentPane.add(label2, null);
		contentPane.add(label1, null);
		contentPane.add(textField1, null);
		contentPane.add(button1, null);
		contentPane.add(textField2, null);
		contentPane.add(textArea1, null);
	}
                  //窗口上的关闭按钮有效
	protected void processWindowEvent(WindowEvent e){
		super.processWindowEvent(e);
		if(e.getID()==WindowEvent.WINDOW_CLOSING){
			System.exit(0);
		}
	}
	public void waitforpackets(){
		while(true){
			try{
				byte[]array = new byte[100];
				receivepacket = new DatagramPacket(array,array.length);

				receivesocket.receive(receivepacket);
				textArea1.append("\nfrom"+receivepacket.getAddress() +":");
				byte data[] = receivepacket.getData();
				String received = new String(data,0);
				textArea1.append(received);
			}//接收数据报
			catch(IOException se){
				textArea1.append(se.toString() +"\n");
				se.printStackTrace();
			}
		}
	}
//检测对话空中的内容是否为空,如果不为空则,输入第二个对话框的内容,如果为空则要弹出“请输入您朋友的IP地址,否则无法连接!”
	void button1_actionPerformed(ActionEvent e){
		String str = textField2.getText();
		if(str.compareTo("")!=0){
			try{
				textArea1.append("\nto"+ textField2.getText() +":"+ textField1.getText());
				String s = textField1.getText();
				byte data[] = new byte[100];
				s.getBytes(0,s.length(),data,0);
				sendpacket = new
				DatagramPacket(data, s.length(),InetAddress.getByName(textField2.getText()),5000);//获取发送数据报
				sendsocket.send(sendpacket);//发送数据报
			}
			catch(IOException exc){
				textArea1.append(exc.toString() +"\n");
				exc.printStackTrace();
			}
		}
		else
			textArea1.setText("请输入您朋友的IP地址,否则无法连接!");
		
	}
}

⌨️ 快捷键说明

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