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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 夏的四季 于 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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

7 个回复

正序浏览
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();       
        }
}


这下都通过了
回复 使用道具 举报
ixiangfeng 发表于 2014-3-2 23:38
哦哦 不好意思 没看仔细 问题楼上说了 你在代码块里面定义的变量只在里面起作用,在外面是用不到的 ...

hiahia!!!
回复 使用道具 举报
twtzhongxin 发表于 2014-3-2 23:33
你的dp是在while里创建的,生命周期旨在while那个大括号内。你把ds.send(dp);放到while里面就行了。 ...

好的  谢谢了!
回复 使用道具 举报
夏的四季 发表于 2014-3-2 23:28
这是我自己看完的笔记,第二行是自己写的注释。问题老是提示我23行dp找不到符号 ...

哦哦 不好意思 没看仔细 问题楼上说了 你在代码块里面定义的变量只在里面起作用,在外面是用不到的
回复 使用道具 举报
你的dp是在while里创建的,生命周期旨在while那个大括号内。你把ds.send(dp);放到while里面就行了。
回复 使用道具 举报
ixiangfeng 发表于 2014-3-2 23:21
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
你这里是想干嘛呢 变量呢? 分号 ...

这是我自己看完的笔记,第二行是自己写的注释。问题老是提示我23行dp找不到符号
回复 使用道具 举报
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
你这里是想干嘛呢 变量呢? 分号呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马