📄 mainframe.java
字号:
package udpserver;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.net.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: </p> * @author not attributable * @version 1.0 */public class MainFrame extends JFrame { byte[] buf=new byte[1000]; //字节数组成员属性,用于发送和接收数据 DatagramPacket dp=new DatagramPacket(buf,buf.length); //数据报包 DatagramSocket socket; //数据报套接字 JPanel contentPane; JLabel jLabel1 = new JLabel(); JTextField jTextField1 = new JTextField(); JButton jButton1 = new JButton(); JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); //Construct the frame public MainFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); jLabel1.setFont(new java.awt.Font("Dialog", 0, 14)); jLabel1.setRequestFocusEnabled(true); jLabel1.setText("监听端口"); jLabel1.setBounds(new Rectangle(24, 19, 59, 26)); contentPane.setLayout(null); this.setSize(new Dimension(335, 300)); this.setTitle("UDP-服务器端"); jTextField1.setFont(new java.awt.Font("Dialog", 0, 14)); jTextField1.setText("6544"); jTextField1.setBounds(new Rectangle(89, 19, 101, 26)); jButton1.setBounds(new Rectangle(216, 19, 93, 26)); jButton1.setFont(new java.awt.Font("Dialog", 0, 14)); jButton1.setText("启动系统"); jButton1.addActionListener(new MainFrame_jButton1_actionAdapter(this)); jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); jScrollPane1.setBounds(new Rectangle(24, 61, 282, 202)); jTextArea1.setText(""); contentPane.add(jLabel1, null); contentPane.add(jTextField1, null); contentPane.add(jButton1, null); contentPane.add(jScrollPane1, null); jScrollPane1.getViewport().add(jTextArea1, null); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } class ReadMessageThread extends Thread{ public void run(){ while(true){ try{ socket.receive(dp); //读入数据报包 } catch (IOException e1) { //捕捉可能产生的异常 jTextArea1.append("读端口信息出错\n"); } //分离数据报包的信息,将数据信息构成String类型 String rcvd=new String(dp.getData(),0,dp.getLength()); InetAddress ip=dp.getAddress(); int port=dp.getPort(); rcvd=rcvd+",from address:"+ip+",prot:"+port; jTextArea1.append("从客户端读入如下的信息:"+rcvd+"\n"); String echo="服务器已接收到来自"+ip+"的信息"; //将反馈信息字符串转换为字节数组 buf=echo.getBytes(); //构建发送信息数据报包 dp=new DatagramPacket(buf,buf.length,ip,port); try{ socket.send(dp); //发送数据报包 } catch (IOException e2) { //捕捉可能产生的异常 jTextArea1.append("发送信息出错\n"); } } } } void jButton1_actionPerformed(ActionEvent e) { try{ //建立数据报套接字 socket=new DatagramSocket(Integer.parseInt(jTextField1.getText())); jTextArea1.append("系统提示:服务器端数据报建立\n"); } catch (IOException e1) { //捕捉可能产生的异常 jTextArea1.append("服务器端口打开出错\n"); } if (socket != null) { //启动读信息线程 ReadMessageThread readThread=new ReadMessageThread(); readThread.start(); } }}class MainFrame_jButton1_actionAdapter implements java.awt.event.ActionListener { MainFrame adaptee; MainFrame_jButton1_actionAdapter(MainFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -