【问题标题】:JGroups(JChannel) Chat Application not working on other computerJGroups(JChannel)聊天应用程序无法在其他计算机上运行
【发布时间】:2016-04-11 14:43:38
【问题描述】:

我正在使用 JGroups 开发一个简单的聊天应用程序。该应用程序在我的计算机上运行良好,但是当我尝试在同一网络上的另一台计算机上运行它时,它不起作用。

void start() throws Exception { 
    channel=new JChannel();                
    channel.setReceiver(this);        
    channel.connect("Test");           
}

我是否缺少 start() 函数的任何配置?当我在另一台计算机上运行时,它无法识别集群“测试”上的聊天实例。也许它会创建另一个集群“Test”实例。

需要帮助。谢谢!

【问题讨论】:

  • 您是否在计算机上配置了 IPv6? JGoups 有时会遇到使用 IPv6 查找其他实例的问题。尝试将“-Djava.net.preferIPv4Stack=true”设置添加到程序启动中。您使用的是什么集合模块和协议?
  • 我正在使用默认值(猜它是 UDP)。我会尝试使用preferIPv4Stack=true。谢谢你的时间!我会告诉它是否有效。
  • 没用。我现在正在尝试设置 bind_addr。

标签: java jgroups


【解决方案1】:

程序显示的输出是什么?如果它包含 127.0.0.1 的地址,则节点将找不到彼此。在这种情况下,设置 bind_addr、-Djgroups.bind_addr=x.x.x.xchannel.getProtocolStack.findProtocol(TP.class).setValue"bind_addr", "x.x.x.x")。后者需要在连接通道之前完成。 如上所述,也可能是 IPv6 问题。

【讨论】:

  • 您好,该程序使用swing组件打开一个简单的聊天窗口。当我在我的计算机上运行两个或更多程序时,它会完美地向其他程序发送消息,但是当我在另一台计算机上运行时,它似乎无法“识别”我计算机中打开的聊天窗口。我会尝试设置bind_addr。就像 channel.getProtocolStack.findProtocol(TP.class).setValue"bind_addr", "192.168.10.101")? 192.168.10.101 是我的网络地址。
  • 我收到“无法在 sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source) 处将 java.net.InetAddress 字段 org.jgroups.protocols.TP.bind_addr 设置为 java.lang.String sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(未知来源)“。尝试设置 bind_addr 时。我正在尝试 channel.getProtocolStack().findProtocol(TP.class).setValue("bind_addr", new String("192.168.10.101"));
  • 编辑:问题已解决。 channel.getProtocolStack().findProtocol(TP.class).setValue("bind_addr",InetAddress.getByName("192.168.10.101"));
猜你喜欢
  • 1970-01-01
  • 2013-08-27
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 2013-08-30
  • 1970-01-01
  • 2018-04-25
  • 2012-01-29
相关资源
最近更新 更多