黑马程序员技术交流社区

标题: UDP发送,说dp找不到符号,求指点,怎么改? [打印本页]

作者: 夏的四季    时间: 2014-3-2 23:05
标题: UDP发送,说dp找不到符号,求指点,怎么改?
本帖最后由 夏的四季 于 2014-3-3 00:20 编辑
  1. import java.net.*;
  2. import java.io.*;
  3. class UdpSend
  4. {
  5. public static void main(String[] args) throws Exception
  6. {
  7. //1,创建udp服务,建立端点,通过DatagramPacket对象
  8. DatagramSocket ds = new DatagramSocket();
  9. //2,确定数据,并封装成数据包。 DatagramPacket(byte[] buf, int length, InetAddress address, int port)

  10. //键盘录入方式
  11. BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  12. String line = null;
  13. while((line=bufr.readLine())!=null)
  14. {
  15. if("886".equals(line))
  16. break;
  17. byte[] buf = line.getBytes();
  18. DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.108"),10000);
  19. }

  20. //3,通过socket服务,将已有的数据包发送出去,通过send方法。
  21. ds.send(dp);
  22. //4,关闭资源。
  23. ds.close();
  24. }
  25. }
复制代码


作者: ixiangfeng    时间: 2014-3-2 23:21
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
你这里是想干嘛呢 变量呢? 分号呢?
作者: 夏的四季    时间: 2014-3-2 23:28
ixiangfeng 发表于 2014-3-2 23:21
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
你这里是想干嘛呢 变量呢? 分号 ...

这是我自己看完的笔记,第二行是自己写的注释。问题老是提示我23行dp找不到符号
作者: twtzhongxin    时间: 2014-3-2 23:33
你的dp是在while里创建的,生命周期旨在while那个大括号内。你把ds.send(dp);放到while里面就行了。
作者: ixiangfeng    时间: 2014-3-2 23:38
夏的四季 发表于 2014-3-2 23:28
这是我自己看完的笔记,第二行是自己写的注释。问题老是提示我23行dp找不到符号 ...

哦哦 不好意思 没看仔细 问题楼上说了 你在代码块里面定义的变量只在里面起作用,在外面是用不到的
作者: 夏的四季    时间: 2014-3-3 00:14
twtzhongxin 发表于 2014-3-2 23:33
你的dp是在while里创建的,生命周期旨在while那个大括号内。你把ds.send(dp);放到while里面就行了。 ...

好的  谢谢了!
作者: 夏的四季    时间: 2014-3-3 00:17
ixiangfeng 发表于 2014-3-2 23:38
哦哦 不好意思 没看仔细 问题楼上说了 你在代码块里面定义的变量只在里面起作用,在外面是用不到的 ...

hiahia!!!
作者: 夏的四季    时间: 2014-3-3 00:19
import java.net.*;
import java.io.*;
class        UdpSend
{
        public static void main(String[] args) throws Exception
        {
                //1,创建udp服务,建立端点,通过DatagramPacket对象
                DatagramSocket ds = new DatagramSocket();
                //2,确定数据,并封装成数据包。 DatagramPacket(byte[] buf, int length, InetAddress address, int port)
               
                //键盘录入方式
                BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
                String line = null;

               
                while((line=bufr.readLine())!=null)
                {
                        if("886".equals(line))
                                break;
               
                        byte[] buf = line.getBytes();
               
                DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.108"),10005);

                ds.send(dp);
                  }
               

        //        byte buf = "udp hehe".getBytes();
        //        DatagramPacket dp =
        //                new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.1"),10000);
                //3,通过socket服务,将已有的数据包发送出去,通过send方法。
               
                //4,关闭资源。
                ds.close();
        }
}





class UdpRece
{
        public static void main(String[] args) throws Exception
        {
                //1,创建udp socket,建立端点。
                DatagramSocket ds = new DatagramSocket(10005);
while(true)
                {
                //2,定义数据包,用于存储数据。
                byte[] buf = new byte[1024];
                DatagramPacket dp = new DatagramPacket(buf,buf.length);
                //3,通过服务的receive方法将收到数据存入数据包中
                ds.receive(dp);
                //4,通过数据包的方法获取其中的数据。
                String ip = dp.getAddress().getHostAddress();
                String data = new String(dp.getData(),0,dp.getLength());
                int port = dp.getPort();
                System.out.println(ip+"::"+data+"::"+port);

                }
        //5,关闭资源
                //ds.close();       
        }
}


这下都通过了




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