跪求:
MulticastSocket m_oSendSocket;
int port = 54321;
InetAddress bind;
try {
bind = InetAddress.getByName("192.168.1.100");
System.out.println(bind);
InetAddress group = InetAddress.getByName("239.0.1.1");
//
m_oSendSocket = new MulticastSocket(new InetSocketAddress(bind, 0));
m_oSendSocket.connect(group, port);
m_oSendSocket.setInterface(bind);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这段代码,在XP下运行,不会报任何的错误,我在vista下就会报错,错误信息
java.net.SocketException: 在一个非套接字上尝试了一个操作。
at java.net.PlainDatagramSocketImpl.socketSetOption(Native Method)
at java.net.PlainDatagramSocketImpl.setOption(PlainDatagramSocketImpl.java:299)
at java.net.MulticastSocket.setInterface(MulticastSocket.java:424)
at com.trs.blog.util.TestSocket.main(TestSocket.java:24)
跪求,牛人,帮我解决一下,谢谢了!

解决方案 »

  1.   

    vista机器的问题  
    TCP/IP协议 有问题
    需要重装TCP/IP协议 
      

  2.   

    非常感谢楼上几位。我也认为是TCP/IP协议问题,可是VISTA的TCP/IP无法卸载啊,我也参考了网上的一些方法,可是还是不行。
      

  3.   

    要解决此问题,请按照以下步骤操作:
     
    警告:注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。
     
    1. 单击开始,然后单击运行。 
    2. 在打开框中,键入 regedit,然后按 Enter 键。 
    3. 浏览到以下注册表项:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock 
    4. 在注册表菜单上,单击导出注册表文件。 
    5. 在“文件名”框中,键入备份文件的名称;例如,键入 Winsock Registry key,然后单击保存。记下保存注册表文件的文件夹的名称。 
    6. 对以下注册项重复步骤 3 至步骤 5:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2 
    7. 从注册表中删除以下项:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2
    注意:步骤 3 至 6 备份了这两个注册表项。万一计算机出现意外行为,您可以使用备份文件还原这些注册表项。有关如何从 .reg 文件还原注册表项的更多信息,请在注册表编辑器帮助文件中搜索“导入或导出注册表项”主题。
    8. 关闭注册表编辑器。 
     
    9. 卸载 TCP/IP 协议。为此,请按照下列步骤操作:
    a.  在“控制面板”中,单击“网络和拨号连接”,右键单击局域网连接,然后在快捷菜单上单击属性。 
    b.  在“此连接使用选中的组件”下,单击 Internet 协议 (TCP/IP),然后单击卸载。 
    c.  按照屏幕上的说明卸载 TCP/IP。 
     
    10. 重新启动计算机,然后重新安装 TCP/IP(如果它未自动安装): 
    a.  在“控制面板”中,双击网络和拨号连接,右键单击局域网连接,然后在快捷菜单上单击属性。 
    b.  单击安装。 
    c.  在“选择网络组件类型”对话框中,单击协议,然后单击添加。 
    d.  在厂商下,单击 Microsoft,单击网络协议下的 Internet 协议 (TCP/IP),然后单击确定。 
    e.  按照屏幕上的说明安装 TCP/IP。
      

  4.   

    我之前就已经按照sky123123说的这样做过了,可是卸载还是不可点击的,所以才有了疑惑