电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> JSP教程
Java数据报编程之概说-JSP教程,Java技巧及代码
作者:网友供稿 点击:36
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
 

一般说明

在tcp/ip协议族中,udp和tcp同样位于传输层,用户数据报是udp协议中的概念.

udp协议提供面向事务的简单不可靠信息传送服务,它不提供对 ip 协议的可靠机制、流控制以及错误恢复功能.

udp 协议基本上是ip 协议与上层协议的接口,从整个用户数据在各层的包装看,udp报文格式相当简单:

16 32bit
source port源端口 destination port目标端口
length 报文长度(单位是字节,包括首部和用户数据区) checksum(校验和)
data


由于校验和的原因,udp还引入了伪首部,这导致了udp和ip层的关系过于密切,破坏了分层原则.

java数据报支持

包java.net中提供了两个类datagramsocket和datagrampacket用来支持数据报通信,datagramsocket用于在程序之间建立传送数据报的通信连接, datagrampacket则用来表示一个数据报。

datagramsocket代表发送和接收数据报的套接字,一个数据报套接字是为包递送服务的发送和接收点,在一个数据报套接字上,每个被发送和接收的包都被独立的寻址和路由,从一台机器到另一台机器上发送的多个包有不同的路由,任意的抵达顺序.

对于datagramsocket,udp广播发送总是使能的(那是缺省设置).为了接收广播包这个类实例应该绑定到通用地址(wildcard address).在某些实现中,当被绑定到更多特定地址上的时候广播包也可以接收.

例如:

datagramsocket s = new datagramsocket(null);
s.bind(new inetsocketaddress(8888));
这等同于:
datagramsocket s = new datagramsocket(8888); 
两种情况都会创建一个能在端口8888上接收广播的datagramsocket实例.

constructor summary
  datagramsocket()
          constructs a datagram socket and binds it to any available port on the local host machine.
protected datagramsocket(datagramsocketimpl impl)
          creates an unbound datagram socket with the specified datagramsocketimpl.
  datagramsocket(int port)
          constructs a datagram socket and binds it to the specified port on the local host machine.
  datagramsocket(int port, inetaddress laddr)
          creates a datagram socket, bound to the specified local address.
  datagramsocket(socketaddress bindaddr)
          creates a datagram socket, bound to the specified local socket address.
 

其中,port指明socket所使用的端口号,如果未指明端口号,则把socket连接到本地主机上一个可用的端口。laddr指明一个可用的本地地址。给出端口号时要保证不发生端口冲突,否则会生成socketexception类例外。

用数据报方式编写通信程序时,通信双方,首先都要建立一个datagramsocket对象,用来接收或发送数据报,然后使用datagrampacket类对象作为传输数据的载体。下面看一下datagrampacket的构造方法 :

constructor summary
datagrampacket(byte[] buf, int length)
          constructs a datagrampacket for receiving packets of length length.
datagrampacket(byte[] buf, int length, inetaddress address, int port)
          constructs a datagram packet for sending packets of length length to the specified port number on the specified host.
datagrampacket(byte[] buf, int offset, int length)
          constructs a datagrampacket for receiving packets of length length, specifying an offset into the buffer.
datagrampacket(byte[] buf, int offset, int length, inetaddress address, int port)
          constructs a datagram packet for sending packets of length length with offset ioffsetto the specified port number on the specified host.
datagrampacket(byte[] buf, int offset, int length, socketaddress address)
          constructs a datagram packet for sending packets of length length with offset ioffsetto the specified port number on the specified host.
datagrampacket(byte[] buf, int length, socketaddress address)
          constructs a datagram packet for sending packets of length length to the specified port number on the specified host.

可以看出,有两个供接收的构造器和四个供发送的构造器.其中,buf中存放数据报数据,length为数据报中数据的长度,address和port旨明目的地址,offset指明了数据报的位移量。

java组播支持

multicastsocket 多播数据报套接字。这个组播套接字对于收发ip多播数据包是很有用的,它扩展了datagramsocket,在其上附加了加入internet上多播组的方法。一个多播组由d类ip地址和标准udp端口指定,d类ip范围是224.0.0.0 to 239.255.255.255,其中224.0.0.0被保留不为它用。

它有三个构造器:

constructor summary
multicastsocket()
          create a multicast socket.
multicastsocket(int port)
          create a multicast socket and bind it to a specific port.
multicastsocket(socketaddress bindaddr)
          create a multicastsocket bound to the specified socket address.
 

基本上,没有指定端口,只为发送,指定端口可收发,多址主机会用套接字地址。



文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·IReport与JasperReport开发详解一-JSP教程,Java技巧及代码
·JSTL(JSP标准标签库)介绍-JSP教程,资料/其它
·格式化输入日期时间控件 JieFormattedDateBox-JSP教程,Java技巧及代码
·JSTL简化JSP编码-JSP教程,Jsp/Servlet
·JUnit和单元测试入门简介-JSP教程,Java技巧及代码
·从数据库中读取一个图片并保存为一个图片文件-JSP教程,数据库相关
·Java Swing入门基础-JSP教程,Java技巧及代码
·IntelliJ IDEA培训-JSP教程,Java技巧及代码
·通过JSP的预编译消除性能瓶颈-JSP教程,Jsp/Servlet
·Java中利用JMF编写摄像头拍照程序-JSP教程,Java技巧及代码

最新文章
·J2ME中的时间处理方法
·J2ME播放声音流程简介
·J2ME开发之手机键盘使用注意问题
·J2ME 记录管理存储
·MVC模式在j2me项目中的应用(二)
·MVC模式在j2me项目中的应用(一)
·J2ME中使用记录存储系统(RMS)存储信息
·J2ME与MIDP开发(1)
·用简单的J2ME程序测试MIDlet的生命周期
·JAVA基础:提升JSP应用程序的七大绝招


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号