黑马程序员技术交流社区

标题: 为什么运行后没有结果 [打印本页]

作者: 张其辉    时间: 2012-10-28 21:29
标题: 为什么运行后没有结果
import java.net.*;
public class wlbc2 {
        public static void main(String[] args) throws Exception
        {
                DatagramSocket ds=new DatagramSocket();
                byte[] buf="udp ge men lai le".getBytes();
                DatagramPacket dp=new DatagramPacket(buf,buf.length
                                                                 ,InetAddress.getByName("www.baidu.com"),10000);
                ds.send(dp);
                ds.close();
        }
}
class jieShou
{
        public static void main(String[] args) throws Exception
        {
                DatagramSocket ds=new DatagramSocket(10000);
                byte[] buf=new byte[1024];
                DatagramPacket dp=new DatagramPacket(buf, buf.length);
                ds.receive(dp);
                String ip=dp.getAddress().getHostAddress();
                String data=new String(dp.getData(),0,dp.getLength());
                int port=dp.getPort();
                System.out.println(ip+"::"+data+"::"+port);
                ds.close();
        }
}毕老师讲的23天09的传输协议,我用的是eclipse,为什么一运行什么都没有呢?接受和输出都没反应啊?
作者: hello_world!    时间: 2012-10-28 21:42
public class wlbc2 {
        public static void main(String[] args) throws Exception
        {
                DatagramSocket ds=new DatagramSocket();
                byte[] buf="udp ge men lai le".getBytes();
                DatagramPacket dp=new DatagramPacket(buf,buf.length
                                                                 ,InetAddress.getByName("www.baidu.com"),10000);

                ds.send(dp);
                ds.close();
        }
}
这段程序的意思是,你想百度服务器中的10000端口发送数据。
class jieShou
{
        public static void main(String[] args) throws Exception
        {
                DatagramSocket ds=new DatagramSocket(10000);
                byte[] buf=new byte[1024];
                DatagramPacket dp=new DatagramPacket(buf, buf.length);
                ds.receive(dp);
                String ip=dp.getAddress().getHostAddress();
                String data=new String(dp.getData(),0,dp.getLength());
                int port=dp.getPort();
                System.out.println(ip+"::"+data+"::"+port);
                ds.close();
        }
}
现在的问题是,你把这段程序能放在百度的服务器上吗?所以你访问的服务器根本就不对。决绝问题的方法是,你把访问地址,改成你能访问的。比如这样:
DatagramPacket dp=new DatagramPacket(buf,buf.length ,InetAddress.getByName("127.0.0.1"),10000);

作者: 周万谋    时间: 2012-10-28 21:42
DatagramPacket dp=new DatagramPacket(buf,buf.length ,InetAddress.getByName("www.baidu.com"),10000);
这句代码有问题,这里是一个UDP发送端,参数InetAddress.getByName("www.baidu.com"),10000 意思分别是发送到哪和对应地址的端口。
你把数据数据发到百度去了,把地址该为自己电脑的IP或者localhost看看。
作者: 王梁星    时间: 2012-10-28 21:44
  1. import java.net.*;
  2. public class testSocket{
  3.   public static void main(String[] args) throws Exception
  4.   {
  5.     DatagramSocket ds=new DatagramSocket();
  6.     byte[] buf="udp ge men lai le".getBytes();
  7.     DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("128.0.0.1"),10000);
  8.                 ds.send(dp);
  9.                 ds.close();
  10.         }
  11. }
  12. class jieShou
  13. {
  14.         public static void main(String[] args) throws Exception
  15.         {
  16.                 DatagramSocket ds=new DatagramSocket(10000);
  17.                 byte[] buf=new byte[1024];
  18.                 DatagramPacket dp=new DatagramPacket(buf, buf.length);
  19.                 ds.receive(dp);
  20.                 String ip=dp.getAddress().getHostAddress();
  21.                 String data=new String(dp.getData(),0,dp.getLength());
  22.                 int port=dp.getPort();
  23.                 System.out.println(ip+"::"+data+"::"+port);
  24.                 ds.close();
  25.         }
  26. }
复制代码
你把域名弄错了。因为服务端是你自己的电脑,所以域名或者IP地址应该写自己本地回环地址127.0.0.1。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2