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

📄 chatframe.java

📁 本程序要求先安装jdk和jCreator 2、在jCreator建立一个叫做chat的工程 3、把本章目录下的所有源文件加入到这个工程中 4、在build菜单下选择complier projec
💻 JAVA
字号:
package chat2;import java.net.*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.lang.*;public class ChatFrame extends JFrame {  JPanel contentPane;  Label label1 = new Label();//发送消息  Label label2 = new Label();//输入ip  Label label3 = new Label();//输入端口标签  Label label4 = new Label();//输出端口标签  TextField textField1 = new TextField();//输入ip  TextField textField2 = new TextField();//发送消息  TextField textField3 = new TextField();//获得输入端口  TextField textField4 = new TextField();//获得输出端口  Button button1 = new Button();//发送消息  Button button2 = new Button();//建立连接  TextArea textArea1 = new TextArea();  boolean online = false;  int portIn = 5000;//输入端口  int portOut = 5001;//输出端口  DatagramPacket sendpacket,receivepacket;//声明发送和接收数据包  DatagramSocket sendsocket,receivesocket;//声明发送和接收DatagramSocket  public ChatFrame() {    enableEvents(AWTEvent.WINDOW_EVENT_MASK);    try {      toInit();    }    catch(Exception e) {      e.printStackTrace();    }  }    private void toInit() throws Exception  {    contentPane = (JPanel) this.getContentPane();    label1.setText("发送信息:");    label1.setBounds(new Rectangle(13, 100, 60, 21));    contentPane.setLayout(null);    this.setSize(new Dimension(363, 320));    this.setTitle("二人聊天室");    label2.setText("输入对方IP地址:");    label2.setBounds(new Rectangle(12, 19, 109, 23));    label3.setText("输入端口:");    label3.setBounds(new Rectangle(12,58,55,22));    label4.setText("输出端口:");    label4.setBounds(new Rectangle(180,58,55,22));    textField3.setText("5000");    textField4.setText("5001");    textField2.setText("210.77.26.60");    button1.setLabel("发送");    button1.setBounds(new Rectangle(280, 100, 59, 21));    button1.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        button1_actionPerformed(e);      }    });    button2.setLabel("连接");    button2.setBounds(new Rectangle(280, 20, 59, 21));    button2.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        button2_actionPerformed(e);      }    });    textField4.setBounds(new Rectangle(240,58,90,22));    textField3.setBounds(new Rectangle(70,58,90,22));    textField2.setBounds(new Rectangle(123, 20, 120, 19));	textField1.setBounds(new Rectangle(76, 100, 190, 19));    textArea1.setBounds(new Rectangle(11, 140, 333, 134));    textArea1.setEditable(false);    contentPane.add(label4, null);    contentPane.add(label3, null);    contentPane.add(label2, null);    contentPane.add(label1, null);    contentPane.add(textField1, null);    contentPane.add(textField2, null);    contentPane.add(textField3, null);    contentPane.add(textField4, null);    contentPane.add(textArea1, null);    contentPane.add(button1, null);    contentPane.add(button2,null);        try {    	    	  	sendsocket=new DatagramSocket(5001);//实例化DatagramSocket类作为输出端          	receivesocket=new DatagramSocket(5000);//实例化DatagramSocket类作为输入端          	online = !(sendsocket.isClosed());    		}   	 	catch(SocketException se){//异常捕获        	se.printStackTrace() ;        	System.exit(0);    	}  }    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() +":"+receivepacket.getPort()+" get:");             byte data[]=receivepacket.getData() ;              String received=new String(data,0);              textArea1.append(received);        }        catch (IOException se){                se.printStackTrace() ;        }    }  }    void button2_actionPerformed(ActionEvent e){//和对方建立连接  	  	String str2 = new String();    String str3 = new String();  	str2 = textField3.getText();    str3 = textField4.getText();            if(str2.compareTo("")!=0&&str3.compareTo("")!=0){    	    	portIn = (int) Integer.parseInt(str2);    	portOut = (int) Integer.parseInt(str3);    	    	    	if(online){    		sendsocket.close();    		receivesocket.close();    		textArea1.append("\n formal connection closed");    	}    	    		    	try {    		 textArea1.append("\n building a connection use the port defined...");	    	  	sendsocket=new DatagramSocket(portOut);          	receivesocket=new DatagramSocket(portIn);          	textArea1.append("\n connection builded.");    		}   	 	catch(SocketException se){        	se.printStackTrace() ;        	System.exit(0);    	}    	online = !(sendsocket.isClosed());    }    	    		else        textArea1.append("\nplease input ports and IP");       	    }    void button1_actionPerformed(ActionEvent e) {//发送消息到对方       	                String str=textField2.getText();        if(online){        	if(str.compareTo("")!=0 ){        		            	            	try {            		        		        		            	                 textArea1.append("\nto "+textField2.getText() +":"+portOut+" say: "+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()),portOut);                 sendsocket.send(sendpacket);            	}            	catch(IOException exc){               		exc.printStackTrace() ;            	}        	        	}        	        	}        else textArea1.append("\nplease build a connection first!");  }}

⌨️ 快捷键说明

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