昨天又调试一下!
我发现问题在于client端无法正确取得客户机ip地址
my code is:
    try{
        InetAddress addr = InetAddress.getLocalHost();
        m_ip=addr.toString();
        m_ip=m_ip.substring(m_ip.indexOf("/")+1);
        }catch (UnknownHostException e){
        e.printStackTrace();
        }
而m_ip得到的值总是 127.0.0.1 ,怎么办??
急用 .......

解决方案 »

  1.   

    应该是addr.getHostAddress()才是,如果还不行。
    防火墙,杀毒工具关掉,再试一试。
      

  2.   

    感谢GJA106
    getHostAddress() 我也用了,还是127.0.0.1我调试用的机子, 在一个局域网中,通过代理上网,网关计算机是ADSL拔号! 上面没有firewall, antivirus 等等是不是还有别的原因!??
      

  3.   

    这个和此问题算一道:
    http://www.csdn.net/expert/topic/768/768623.xml?temp=.2866938觖决了一起给分!
      

  4.   

    原因是在这:DatagramSocket socket=new DatagramSocket ();
    在建立DatagramSocket对象时没有与 18.1.1.181地址相连,应为:
    DatagramSocket socket=new DatagramSocket(2323,InetAddress.getByName("18.1.1.181");
     socket.send(packet);
      

  5.   

    谢谢各位的回复
    我刚把程序进行了一定修改, 已经可进行数据发送了!
    可问题在于, 我的机器在一个网域网中, 通过代理上理
    发出去的数据包被转回来后, 只能被代理服务器接收??当然, 在Server, 我获取的客户数据ip的确是代理服务器地址
    那怎样才能做到, 让内部网机器收到数据???OICQ 不是做得挺好吗?
      

  6.   

    谢谢楼上兄弟回复...
    现在问题是这样:我用socket做一个基于udp的通信小程序, 一个Server端放在外网上, 而我测试client时, 是在局域网中进行, 在本机及代理网关机器上分别运行我的客户端, 它们均可正常发送信息到Server 端,  但接收上却不尽人意, Server端发回的信息, 只能被运行在网关机器上的client接收, Lan中其它client就收不到....... 在Server端, 我的程序是从客户数据包中获取其ip,  Packet.getAddress();
    的确, 若局域网通过代理上网, 其它client发过去的数据包, 包源ip 也是代理网关机器, 我想这也是只有网关才能收到信息的原因可问题就在这, 我该怎么解决, 不可能设想每个用户都自行拔号上线!!!
    如何解决..  ????  拜托了!