黑马程序员技术交流社区

标题: DatagramPacket的两种形式怎么区分使用??(详细见帖) [打印本页]

作者: wahaha    时间: 2013-2-28 23:54
标题: DatagramPacket的两种形式怎么区分使用??(详细见帖)
本帖最后由 夏添 于 2013-3-11 21:22 编辑

DatagramPacket(byte[] buf, int length, InetAddress address, int port)

DatagramPacket(byte[] buf, int length, SocketAddress address)
有什么区别吗?


      亲爱的筒子们,不要讲说少个int port介种话哈`~~~呵呵,
      查阅API文档,注释一模一样...费解..
     我们一般用DatagramPacket(byte[] buf, int length, InetAddress address, int port)
     那么DatagramPacket(byte[] buf, int length, SocketAddress address)在什么情况下使用呢???

作者: Benwolf0818    时间: 2013-3-1 00:44
1、DatagramPacket(byte[] buf, int length, InetAddress address, int port);将length长的buf数据发送到指定的地址的端口号处
 2、 DatagramPacket(byte[] buf, int length, SocketAddress address);将length长的buf数据发送到指定的套接字地址处
现在提取两者的不同点:1是地址的端口号;2是套接字地址
多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。
DatagramPacket(byte[] buf, int length, SocketAddress address)可以大意的认为需要指定协议时使用

套接字(socket=ipaddress+TCP/UDP port)多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。
关键点就是:ip地址+使用的传输协议(UDP或TCP)+端口号绑定为socket,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
作者: wahaha    时间: 2013-3-1 06:13
崔芝鲁 发表于 2013-3-1 00:44
1、DatagramPacket(byte[] buf, int length, InetAddress address, int port);将length长的buf数据发送到指 ...

:(......可不可会讲的简单点呢..铜子...
作者: Benwolf0818    时间: 2013-3-1 08:32
夏添 发表于 2013-3-1 06:13
......可不可会讲的简单点呢..铜子...

你静下心看看,这就是能看明白的最简化了
作者: 刘圣繁    时间: 2013-3-1 10:59
本帖最后由 刘圣繁 于 2013-3-1 11:02 编辑

DatagramPacket(byte[] buf, int length, InetAddress address, int port)

DatagramPacket(byte[] buf, int length, SocketAddress address)
注意注意:SocketAddress  封装了InetAddress 和port 两者也就是 SocketAddress  =InetAddress +port
SocketAddress是个借口  有一个子类实现了它 InetSocketAddress   
SocketAddress sa=new InetSocketAddress(InetAddres  addr,int port); 然后把sa 传给DatagramPacket(byte[] buf, int length, SocketAddress address) 这不就跟第一个一样了吗




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