书上的一个例子,用组播技术实现网络聊天,但我如果setLoopbackMode(true),也就是不收到自已发送的消息后,也收不到别人发的消息了,不禁用这种功能则可以。这是为什么?有2个类,一个是启动类,一个是实现类(窗体)。是用jbuilder写的,所以用jbuilder看起来更方便。
启动类如下:
package frames;import javax.swing.UIManager;
import java.awt.*;/**
 *启动FrmWhiteBoard的主类
 */public class AppWhiteBoard {
  boolean packFrame = false;  //Construct the application
  public AppWhiteBoard() {
    FrmWhiteBoard frame = new FrmWhiteBoard();
    //Validate frames that have preset sizes
    //Pack frames that have useful preferred size info, e.g. from their layout
    if (packFrame) {
      frame.pack();
    }
    else {
      frame.validate();
    }
    //Center the window
    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);
    boolean flag=true;
    while (flag){
      flag=frame.waitforpackets();
    }  }  //Main method
  public static void main(String[] args) {
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch(Exception e) {
      e.printStackTrace();
    }
    new AppWhiteBoard();
  }
}另外一个程序贴不上,请看我的博客:http://blog.sina.com.cn/u/491fec8d010004lq

解决方案 »

  1.   

    这个程序很简单,为什么没人回答呢,调用类AppWhiteBoard是不用看的,就看那个窗体类就行了。
      

  2.   

    两个窗口都是在本机开的。所以都是local咯。
      

  3.   

    楼上,你答非所问了,我知道是local的,那又怎么样呢,我问的是,禁用了收到自己发的消息,则对方也收不到了。
      

  4.   

    禁用的是local的,不光是自己的只要是local的都禁用。你把对方的窗口开在另一台机子上试过了吗?
      

  5.   

    不是禁用local,是禁用了收到自己发送过的消息,接收别人的消息不影响的,楼上还是没有搞懂这个方法的含义
      

  6.   

    在UDP中,关于数据报的所有信息(包括发和往的地址)都包含在包自身当中;socket只需要了解监听或发送的本地端口。所以开在同一台机子上的两个窗口发的数据报对监听socket来说都是一模一样的。所以都丢弃。在一台机子上,不管是自己发送的还是别人发送的数据报,对监听socket来说都是一模一样的。除了正文数据。
      

  7.   

    "在一台机子上,不管是自己发送的还是别人发送的数据报,对监听socket来说都是一模一样的。除了正文数据。"这句话怎么理解?我的程序用在2台机器上的时候,也是收不到任何信息