本帖最后由 qqlaji123456 于 2012-07-31 15:05:02 编辑

解决方案 »

  1.   

    byte[] recvBuf = new byte[1]; //缓存区
    缓存区太小吧,改new byte[2048]; socket.receive(packet); //需要在一个循环里面
      

  2.   

    接收端口错了,应该是4000,DatagramSocket ds = new DatagramSocket(54321),这里定义的54321端口是要从这个端口发出去,可以不写,系统会自动调用闲置端口发送。
    DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress(IP, 40000)),这里定义的4000端口才是发送到对方的端口,所以你要用4000端口接收!
      

  3.   

    JDK版本是否一致?
    不过朋友公司也有在不同的系统上一样的代码有区别的,部分功能对操作系统底层的依赖
    你可以尝试改其他端口试试
      

  4.   

    JDK版本有什么限制么,端口已经测试过了,问题还是一样
      

  5.   

    没有限制,但是你在xp上的jdk应该和win7上同一版本
      

  6.   

    哦,我这边的是将Java程序转成exe文件了,同时把JDK也打包进去的,win7和Xp上是没有安装JDK的
      

  7.   

    win7需要绑定端口,xp不需要绑定端口。试一下绑定端口,不能随机绑定(0)