仓酷云 发表于 2015-1-18 11:39:27

JAVA网页编程之Java数据报编程之播送

你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。编程|数据UDP播送,实践上是很复杂的,了解IP编址计划,就了解甚么是播送,良多文章称为多播,我以为称为播送对照好,由于多播是对播送和组播的泛指,在Java程序中处置天然是分歧的了,本文和下一篇只为夸大观点.
正如后面所说,播送地点包含定向播送地点和无限播送地点,TCP/IP协定划定,这两种地点只能在当地收集中呈现,路由器实行了这个划定,不把方针地点为播送地点的报文转发到别的收集,而组播就分歧,下一篇先容组播编程.
这个播送的程序能够复杂的经由过程修正单播程序中的报文的方针地点成播送地点便可成为播送程序.
packagerecmail.multiservice;
importjava.net.DatagramSocket;
importjava.net.*;
importjava.io.*;
importjava.util.ArrayList;
importjava.util.Iterator;
publicclassDatagramRecvSender_bextendsDataSwapListenerAdapter
implementsRunnable{
publicstaticfinalintDatagramPort=10698;
privatejava.net.DatagramSocketroad;
privateInetAddressia;
DatagramPacketdp;
publicstaticfinalintDatagram_Length=8192;
privateDataPacketcdp;
privatebooleanishandling=true;
DataSwapEventdsevent;
/**
*这个机关器用于吸收数据报.
*/
publicDatagramRecvSender_b(){
try{
System.out.println("recv...");
dsevent=newDataSwapEvent(this);
SocketAddresssa=newInetSocketAddress(
DatagramRecvSender_b.DatagramPort);
//最少要指定命据报吸收端口,这是对吸收真个独一请求.固然假如主机是多址主机,必要road=newDatagramSocket(sa);
road=newDatagramSocket(DatagramRecvSender_b.DatagramPort);
System.out.println(road.isBound()+"::"+road.getBroadcast());
}
catch(SocketExceptionex){
ex.printStackTrace();
}
catch(Exceptionex1){
ex1.printStackTrace();
}
}
/**
*这个机关器用于发送数据报.
*@paramsendString
*/
publicDatagramRecvSender_b(Stringsend){
try{
System.out.println("send...");
//这个类能够盘算当地网的定向播送地点.
BroadcastAddrinfo=newBroadcastAddr();
info.setNetmask("255.255.255.0");
info.setNetaddr("192.168.0.106");
info.execCalc();
ia=InetAddress.getByName(info.getNetbroadcastaddr());//"255.255.255.255"
dsevent=newDataSwapEvent(this);
SocketAddresssa=newInetSocketAddress(ia,
DatagramRecvSender_b.DatagramPort);
//假如必要吸收数据报,就必要指定一个端口,不然不用指定.road=newDatagramSocket(DatagramRecvSender_s.DatagramPort-1);
road=newDatagramSocket();
//DatagramSocket类实例的getBroadcast()前往true,即该类的播送属性缺省设置是true,就是使能的.
//road.setBroadcast(true);能够测试一下当实行了road.setBroadcast(false)后会呈现甚么情况.
System.out.println("isBound--"+road.isBound()+":getBroadcast--"+road.getBroadcast());
}
catch(SocketExceptionex){
ex.printStackTrace();
}
catch(UnknownHostExceptionex1){
ex1.printStackTrace();
}
}
publicvoidsendFile(Stringfile){
cdp=newDataPacket(file);
System.out.println(file);
Iteratorit=cdp.getDataPackets().iterator();
byte[]b;
while(it.hasNext()){
b=((DataEntry)it.next()).getByte();
DatagramPacketdp=newDatagramPacket(b,0,b.length,ia,DatagramRecvSender_b.DatagramPort);
try{
Thread.sleep(100);
if(dp==null)
continue;
road.send(dp);
}
catch(Exceptionex){
ex.printStackTrace();
}
}
}

publicbooleanisHandling(){
returnishandling;
}
publicvoidisHandling(booleanishand){
ishandling=ishand;
}
publicvoidrun(){
byte[]buffer=newbyte;
DatagramPacketpacket=newDatagramPacket(buffer,buffer.length);
DataPacketdp=newDataPacket();
while(ishandling){
packet.setLength(buffer.length);
System.out.println("wait..");
try{
road.receive(packet);
dp.Add(packet.getData());
if(dp.isFull()){
dsevent.setImage(dp.Gereratedata());
this.processRecvFinishedEvent(dsevent);
dp=newDataPacket();
}
}
catch(IOExceptionex){
System.out.println(ex);
}
}
}
publicstaticvoidmain(String[]args){
Stringfile[];
ArrayListal=newArrayList();
//换成你呆板上的图像文件夹
Stringpath="E:
ature";
Filef=newFile(path);
file=f.list();
DatagramRecvSender_bdgrs=newDatagramRecvSender_b("");
for(intj=0;j<1000;j++)
for(inti=0;i<file.length;i++){
try{
Thread.sleep(2000);
}
catch(InterruptedExceptionex){
}
if(file.endsWith("jpg")||file.endsWith("bmp"))
dgrs.sendFile(path+file);
}
}
}
publicstaticvoidmain(String[]args){
Stringfile[];
ArrayListal=newArrayList();
Stringpath="E:
ature";//naturemzip
Filef=newFile(path);
file=f.list();
DatagramRecvSender_bdgrs=newDatagramRecvSender_b("");
for(intj=0;j<1000;j++)
for(inti=0;i<file.length;i++){
try{
Thread.sleep(2000);
}
catch(InterruptedExceptionex){
}
if(file.endsWith("jpg")||file.endsWith("bmp"))
//System.out.println(file);
//al.add(path+file);
dgrs.sendFile(path+file);
}
}
}

吸收端显现界面和单播不异,修要修正的只要一句:
在类testDual的main办法中,把DatagramRecvSender_s改成DatagramRecvSender_b便可,把吸收端放到你的局域网上的几个呆板上同时运转,你应当会看到不休显现的图像.
publicstaticvoidmain(String[]args){
testDualtest=newtestDual();
test.initmain();
test.go();
DatagramRecvSender_sdgrs=newDatagramRecvSender_s();
dgrs.addDataSwapListener(test);
Threadthread=newThread(dgrs,"test");
thread.start();
}
下一篇先容组播编程.

有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。

深爱那片海 发表于 2015-1-21 12:26:28

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

简单生活 发表于 2015-1-24 15:08:59

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

只想知道 发表于 2015-1-25 09:25:03

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

蒙在股里 发表于 2015-2-2 18:18:21

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

再现理想 发表于 2015-2-5 09:55:49

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

变相怪杰 发表于 2015-2-5 15:58:13

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

小妖女 发表于 2015-2-5 19:51:28

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

莫相离 发表于 2015-2-13 06:22:17

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

admin 发表于 2015-3-3 16:19:37

是一种突破用户端机器环境和CPU

乐观 发表于 2015-3-17 07:08:36

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

第二个灵魂 发表于 2015-3-24 00:38:37

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

小女巫 发表于 2015-4-1 17:08:58

是一种使用者不需花费很多时间学习的语言

精灵巫婆 发表于 2015-4-5 10:13:44

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

活着的死人 发表于 2015-4-6 01:06:39

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

灵魂腐蚀 发表于 2015-4-10 07:15:33

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

若相依 发表于 2015-4-16 00:09:06

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

兰色精灵 发表于 2015-4-17 12:59:38

Java是一种计算机编程语言,拥有跨平台、面向对java

愤怒的大鸟 发表于 2015-4-26 15:13:03

是一种语言,用以产生「小应用程序(Applet(s))
页: [1]
查看完整版本: JAVA网页编程之Java数据报编程之播送