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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cyh8807 中级黑马   /  2013-2-3 16:21  /  1891 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-2-5 12:30 编辑
  1. import java.net.*;
  2. import java.io.*;
  3. class UdpSend2
  4. {
  5.         public static void main(String[] args) throws Exception
  6.         {
  7.                 DatagramSocket ds = new DatagramSocket();
  8.                 BufferedReader bfr = new
  9.                                                                         BufferedReader(new InputStreamReader(System.in));
  10.                 String line = null;
  11.                 while((line=bfr.readLine())!=null)
  12.                 {
  13.                         if("88".equals(line))
  14.                                 break;
  15.                         byte[] buf = line.getBytes();
  16.                         DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("localHost"),10000);
  17.                         ds.send(dp);
  18.                 }
  19.                 ds.close();
  20.         }
  21. }
  22. class UdpReceive2
  23. {
  24.         public static void main(String[] args) throws Exception
  25.         {
  26.                 DatagramSocket ds = new DatagramSocket(10001);
  27.                 while(true)
  28.                 {
  29.                         byte[] buf = new byte[1024];
  30.                         DatagramPacket dp = new DatagramPacket(buf,buf.length);
  31.                         ds.receive(dp);
  32.                         String ip = dp.getAddress().getHostAddress();
  33.                         String data = new String(dp.getData(),0,dp.getLength());
  34.                         System.out.println(ip + "::" + data);
  35.                 }
  36.         }
  37. }
复制代码
我们知道端口是对网络应用程序进行的数字标识,上述程序中监听端DatagramSocket ds = new DatagramSocket(10001);所指定的端口为什么必须和
发送端所使用的端口一致才可以监听到数据呢?在监听端使用哪一个端口来监听可以作为广播,监听到发送端所有端口发送的数据
或者说把DatagramSocket ds = new DatagramSocket(10001);如何修改可以监听发送端所有端口发送的数据

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

3 个回复

倒序浏览
呵呵。这个其实很容易理解,一个数据包发送到你的电脑后,如果数据里只包含了IP信息,那么数据根本就不知道该发给哪个应用程序。有了端口就不一样了。只要传送之前商量好端口,那么数据就会被指定的端口的应用程序接收,从而保证信息传输的正确性。

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

回复 使用道具 举报
     例如你的电脑收到了8080端口的数据包,这就很明显了噻。数据是发给你目前正浏览的网页浏览器的。然后你的网页浏览器就会及时处理这些数据,你也就会看到网页的更新。而这个数据如果错误地发给了你的QQ,你是不是会觉得有点扯淡呢。端口,就是为了帮助数据到达指定位置。
回复 使用道具 举报
我们知道端口是对网络应用程序进行的数字标识,上述程序中监听端DatagramSocket ds = new DatagramSocket(10001);所指定的端口为什么必须和
发送端所使用的端口一致才可以监听到数据呢?在监听端使用哪一个端口来监听可以作为广播,监听到发送端所有端口发送的数据
或者说把DatagramSocket ds = new DatagramSocket(10001);如何修改可以监听发送端所有端口发送的数据
端口广播没听过,地址广播是255.255.255.255,监听到发送端所有端口发送的数据,就是监听所有端口
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马