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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© clh 中级黑马   /  2014-9-18 17:14  /  2143 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 clh 于 2014-9-18 20:04 编辑

这是视屏第23天,07和08的内容,我检查了好几遍,写的应该没问题,麻烦各位大大,能不能在你们的机子上运行下, 跑一下看看看,能不能实现数据传输,,,文中的ip地址需要改成你们自己机子的ip,自己打一下命令就可以知道自己的ip,,,命令:ipconfig
  1. /*
  2. 需求:通过udp传输方式,讲一段文字数据发送出去
  3. 定义一个udp发送端
  4. 思路:
  5. 1,建立updsocket服务
  6. 2,提供数据,并将数据封装到数据包中
  7. 3,通过socket 服务的发送功能,将数据包发出去
  8. 4,关闭资源

  9. */

  10. import java.net.*;

  11. class UdpSend
  12. {
  13.         public static void main(String[] args) throws Exception
  14.         {
  15.                 //1,创建udp服务,通过DatagramSocket对象
  16.                 DatagramSocket ds = new DatagramSocket();

  17.                 //2,确定数据,并封装成数据包..DatagramPacket(byte[] buf, int length, InetAddress address, int port)

  18.                 byte[] buf = "udp ge men lai le ".getBytes();
  19.                 DatagramPacket dp =
  20.                         new  DatagramPacket(buf,buf.length,InetAddress.getByName("196.168.1.102"),10000);<font color="#ff0000">//这里的ip需要更改</font>

  21.                 //3,通过socket 服务,将已有的数据包发送出去,通过send方法
  22.                 ds.send(dp);

  23.                 //4,关闭资源、
  24.                 ds.close();


  25.         }
  26. }
  27. /*
  28. 需求:
  29. 定义一个应用程序,用于接收数据并处理的


  30. 定义udp的接收端。
  31. 思路:
  32. 1,定义udpscoket服务,通常会监听一个端口,其实就是给这个接收网络应用程序定义数字标识。
  33.                 方便明确那些数据过来,应用程序可以处理。
  34. 2,定义一个数据,因为要存储接收到的字节数据,
  35. 因为数据包对象中有更多功能可以提取字节数据中不同数据信息。
  36. 3,通过socket服务的receive方法将接收到的数据存入已定义好的数据包中
  37. 4,通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台
  38. 5,关闭资源

  39. */

  40. class UdpRece
  41. {
  42.         public static void main(String[] args) throws Exception
  43.         {
  44.                 //1,创建udp socket,建立端点
  45.                 DatagramSocket ds = new DatagramSocket(10000);
  46.                
  47.                 //2,定义数据包,用于存储数据
  48.                 byte[] buf = new byte[1024];
  49.                 DatagramPacket dp = new DatagramPacket(buf,buf.length);

  50.                 //3,通过服务的receive方法将收到的数据存入数据包中
  51.                 ds.receive(dp);

  52.                 //4,通过数据包的方法获取其中的数据
  53.                 String ip = dp.getAddress().getHostAddress();
  54.         
  55.                 String  data = new String(dp.getData(),0,dp.getLength());

  56.                 int port = dp.getPort();

  57.                 System.out.println(ip+"::"+data+"::"+port);

  58.                 //5.关闭资源
  59.                 ds.close();


  60.                
  61.         }
  62. }
复制代码






评分

参与人数 1技术分 +1 收起 理由
陈君 + 1 加油

查看全部评分

12 个回复

倒序浏览
不知道为什么我的机子上实现不了这一个内容,也没有视频中的防火墙
回复 使用道具 举报
没问题,改一下端口试试。
回复 使用道具 举报
xplcc 发表于 2014-9-18 17:41
没问题,改一下端口试试。

是说,你那边可以运行么
回复 使用道具 举报
clh 发表于 2014-9-18 17:58
是说,你那边可以运行么

嗯  可以的
回复 使用道具 举报

看来我机子的问题,应该是防火墙屏蔽了,谢谢啊
回复 使用道具 举报
clh 中级黑马 2014-9-18 18:07:54
7#

谢谢你了
回复 使用道具 举报
代码和老毕的一样
回复 使用道具 举报
clh 中级黑马 2014-9-18 20:04:37
9#
夜半风 发表于 2014-9-18 20:02
代码和老毕的一样

对,已经解决
回复 使用道具 举报
本帖最后由 liaorubei 于 2014-9-18 20:12 编辑

要是你是一台电脑的话,介绍你一个IP地址,你可以百度一下这个IP 127.0.0.1好了,下面说正事,如果想要用本机测试的话,很容易的,我尽量把代码写简单一点.
  1. //
  2. import java.net.*;
  3. public class UdpA {
  4. public static void main(String[] args) throws Exception {
  5. // 其中发送数据包时的步骤
  6. // (1).使用DatagramSocket()方法创建一个套接字
  7. // (2).使用DatagramPacket(byte[] buf, int length, InetAddress address, int
  8. // port) 打包要发送的数据
  9. // (3).使用DatagramSocket类的send(DatagramPacket p) 发送数据包
  10. DatagramSocket socket = new DatagramSocket();// 这里可以不用绑定端口,由系统自动分配
  11. byte[] buf = "您好,我是UdpA,很高兴认识你".getBytes();
  12. // 我们把数据包要发送到是IP和端口分别是本机的Ip和10000端口
  13. DatagramPacket packetSend = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 10000);
  14. socket.send(packetSend);
  15. //接收数据
  16. DatagramPacket packetBack = new DatagramPacket(new byte[1024], 1024);
  17. socket.receive(packetBack);
  18. System.out.println("对方发来的信息为:" + (new String(packetBack.getData(), 0, packetBack.getLength())));
  19. socket.close();
  20. }
  21. }
复制代码

127.0.0.1就是本机的地址,你写另一个UDP程序,绑定并侦听10000端口就好,因为这个程序就是把内容发到本机的,原理和老师在局域网里面展示的效果和原理是一样的,只不过这里不用那么多电脑而已




评分

参与人数 1技术分 +1 收起 理由
陈君 + 1 很给力!

查看全部评分

回复 使用道具 举报
clh 中级黑马 2014-9-18 20:12:49
11#
liaorubei 发表于 2014-9-18 20:09
要是你是一台电脑的话,介绍你一个IP地址,你可以百度一下这个IP 127.0.0.1好了,下面说正事,如果想要用本机测 ...

谢谢。已经搞定
回复 使用道具 举报
为毛亲友卷变成120了不是100的吗?
回复 使用道具 举报
liaorubei 发表于 2014-9-18 20:09
要是你是一台电脑的话,介绍你一个IP地址,你可以百度一下这个IP 127.0.0.1好了,下面说正事,如果想要用本机测 ...

好牛!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马