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

📄 sendandrecievedatainmgframe.java

📁 Java网络编程实例
💻 JAVA
字号:
package sendandrecievedata;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.net.*;public class sendandrecievedataInMGFrame extends JFrame {  private JPanel contentPane;  private TextField textField1 = new TextField();  private Button button1 = new Button();  private Label label1 = new Label();  private Label label2 = new Label();  int port;                                       //声明组播使用的端口  MulticastSocket socket;                          //声明建立组播组使用的MulticastSocket类  InetAddress group;                               //声明建立组播组使用的组播组地址  DatagramPacket packet;                           //声明发送和接收数据所使用的DatagramPacket类  //Construct the frame  public sendandrecievedataInMGFrame() {    enableEvents(AWTEvent.WINDOW_EVENT_MASK);    try {      jbInit();    }    catch(Exception e) {      e.printStackTrace();    }  }  //Component initialization  private void jbInit() throws Exception  {    //setIconImage(Toolkit.getDefaultToolkit().createImage(sendandrecievedataInMGFrame.class.getResource("[Your Icon]")));    contentPane = (JPanel) this.getContentPane();            //设计窗体布局    textField1.setBounds(new Rectangle(88, 127, 240, 32));    contentPane.setLayout(null);    this.setSize(new Dimension(400, 300));    this.setTitle("组播组中发送和接收数据");    button1.setLabel("发送数据");    button1.setBounds(new Rectangle(166, 186, 88, 29));    button1.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        button1_actionPerformed(e);      }    });    label1.setBounds(new Rectangle(88, 84, 240, 32));    label2.setBounds(new Rectangle(88, 41, 220, 32));    contentPane.add(textField1, null);    contentPane.add(button1, null);    contentPane.add(label1, null);    contentPane.add(label2, null);    createMulticastGroupAndJoin();  }  //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);    }  }  public void createMulticastGroupAndJoin()           //创建一个组播组并加入此组的函数  {    try    {      port = 5000;                                      //设置组播组的监听端口为5000      group = InetAddress.getByName("239.0.0.0");       //设置组播组的地址为239.0.0.0      socket = new MulticastSocket(port);               //初始化MulticastSocket类并将端口号与之关联      socket.setTimeToLive(1);                          //设置组播数据报的发送范围为本地网络      socket.setSoTimeout(10000);                       //设置套接字的接收数据报的最长时间      socket.joinGroup(group);                           //加入此组播组      label2.setText("已加入地址为239.0.0.0的组播组");    }    catch(Exception e1)    {      System.out.println("Error: " + e1);               //捕捉异常情况    }  }  public void sendData()                                //向组播组发送数据的函数  {    try    {      byte[] data = textField1.getText().getBytes();       //将用户所要发送的数据转换为字节形式并存储在数组中      packet = new DatagramPacket(data, data.length, group, port);    //初始化DatagramPacket的实例      socket.send(packet);                                   //通过MulticastSocket实例端口向组播组发送数据    }    catch(Exception e1)    {      System.out.println("Error: " + e1);                   //捕捉异常情况    }  }  public String recieveData()                             //从组播组接收数据的函数  {    String message;    try    {      packet.setData(new byte[512]);                      //设定接收数据的DatagramPacket实例的数组大小      packet.setLength(512);                               //设定接收数据的DatagramPacket实例的长度      socket.receive(packet);                              //通过MulticastSocket实例端口从组播组接收数据      message = new String(packet.getData(), 0, packet.getLength());  //将接受的数据转换成字符串形式    }    catch(Exception e1)    {      System.out.println("Error: " + e1);                   //捕捉异常情况      message = "Error: " + e1;    }    return message;  }  void button1_actionPerformed(ActionEvent e) {    sendData();                                             //首先向组播组发送数据    String message = recieveData();                         //然后从组播组接受此数据    label1.setText("Data recieved: '" + message + "'");     //本机显示接收到的数据  }}

⌨️ 快捷键说明

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