A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张其辉 中级黑马   /  2012-10-28 21:29  /  1619 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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,为什么一运行什么都没有呢?接受和输出都没反应啊?

3 个回复

倒序浏览
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);
回复 使用道具 举报
DatagramPacket dp=new DatagramPacket(buf,buf.length ,InetAddress.getByName("www.baidu.com"),10000);
这句代码有问题,这里是一个UDP发送端,参数InetAddress.getByName("www.baidu.com"),10000 意思分别是发送到哪和对应地址的端口。
你把数据数据发到百度去了,把地址该为自己电脑的IP或者localhost看看。
回复 使用道具 举报
  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。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马