仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1096|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网页设计Java数据报编程之单播

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:39:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流.编程|数据实践上,单播就是一个报文从源主机向另外一个方针主机发送,吸收方针只要一个.
起首,写收发器类DatagramRecvSender_s,这个类既要发送数据报又要吸收数据报,发送一个文件夹中的一切图片,一张一张的举行,吸收是在一个线程中举行,每收完一个文件,就激活一个事务,事务处置器处置这个事务.
类清单为:
packagerecmail.multiservice;
importjava.net.DatagramPacket;
importjava.net.DatagramSocket;
importjava.net.SocketException;
importjava.net.SocketAddress;
importjava.net.UnknownHostException;
importjava.net.InetSocketAddress;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.net.InetAddress;
importjava.io.File;
importjava.util.Iterator;
publicclassDatagramRecvSender_sextendsDataSwapListenerAdapter
implementsRunnable{
publicstaticfinalintDatagramPort=10698;
privatejava.net.DatagramSocketroad;
privateInetAddressia;
DatagramPacketdp;
publicstaticfinalintDatagram_Length=8192;
privateDataPacketcdp;
privatebooleanishandling=true;
DataSwapEventdsevent;
/**
*这个机关器用于吸收数据报.
*/
publicDatagramRecvSender_s(){
try{
System.out.println("recv...");
ia=InetAddress.getByName("localhost");//192.168.0.17"127.0.0.1"
dsevent=newDataSwapEvent(this);
SocketAddresssa=newInetSocketAddress(ia,
DatagramRecvSender_s.DatagramPort);
//最少要指定命据报吸收端口,这是对吸收真个独一请求.固然假如主机是多址主机,必要road=newDatagramSocket(sa);
road=newDatagramSocket(DatagramRecvSender_s.DatagramPort);
System.out.println(road.isBound()+"::"+road.getBroadcast());
}
catch(SocketExceptionex){
ex.printStackTrace();
}
catch(Exceptionex1){
ex1.printStackTrace();
}
}
/**
*这个机关器用于发送数据报.
*@paramsendString
*/
publicDatagramRecvSender_s(Stringsend){
try{
System.out.println("startsending...");
ia=InetAddress.getByName("192.168.0.4");//"255.255.255.255""192.168.0.4""127.0.0.1"
dsevent=newDataSwapEvent(this);
SocketAddresssa=newInetSocketAddress(ia,
DatagramRecvSender_s.DatagramPort);
//假如必要吸收数据报,就必要指定一个端口,不然不用指定.road=newDatagramSocket(DatagramRecvSender_s.DatagramPort-1);
road=newDatagramSocket();
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();
//数据报是自包括的,自形貌的数据,它的送达是由路由器实行的,路由器路由算法依据报文的方针地点选择得当的路由递送报文,
//以是数据报中要指定方针IP地点和方针主机处置端口.
DatagramPacketdp=newDatagramPacket(b,0,b.length,ia,DatagramRecvSender_s.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[DataPacket.DataSwapSize];
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_sdgrs=newDatagramRecvSender_s("");
for(intj=0;j<1000;j++)
for(inti=0;i<file.length;i++){
try{
Thread.sleep(2000);
}
catch(InterruptedExceptionex){
}
if(file[i].endsWith("jpg")||file[i].endsWith("bmp"))
dgrs.sendFile(path+file[i]);
}
}
}
上面看吸收真个界面.
packagerecmail.multiservice;
importjava.awt.BorderLayout;
publicclasstestDual
extendsDualWindowimplementsDataSwapListener{
JImagePanelip;
java.awt.Imagebi;
publictestDual(){
}
publicvoidinit(){
super.init();
ImageShowis=newImageShow();
is.addDataSwapListener(this);
Threadthread=newThread(is,"test");
thread.start();
}
publicstaticvoidmain(String[]args){
testDualtest=newtestDual();
test.initmain();
test.go();
DatagramRecvSender_sdgrs=newDatagramRecvSender_s();
dgrs.addDataSwapListener(test);
Threadthread=newThread(dgrs,"test");
thread.start();
}
publicvoidinitmain(){
super.initmain();
ip=newJImagePanel();
root.setLayout(newBorderLayout(5,5));
root.add(ip,BorderLayout.CENTER);
}
publicvoidOnDataSendFinished(Objects,DataSwapEvente){
}
publicvoidOnDataRecvFinished(Objects,DataSwapEvente){
this.bi=e.getImage();
ip.setImage(bi);
System.out.println("recvFinished!");
}
}
testDual扩大的DualWindow类清单:
packagerecmail.multiservice;
importjavax.swing.JPanel;
importjavax.swing.JFrame;
importjavax.swing.JApplet;
publicclassDualWindow
extendsJApplet{
protectedJPanelroot;
privateJFrameframe;
publicDualWindow(){
}
publicvoidinit(){
root=newJPanel();
this.setContentPane(root);
}
publicvoidinitmain(){
root=newJPanel();
}
publicstaticvoidmain(String[]args){
testDualtest=newtestDual();
test.initmain();
test.start();
test.go();
}
publicvoidgo(){
frame=newJFrame();
frame.setContentPane(root);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,200);
frame.validate();
frame.setVisible(true);
}
}


下一篇先容播送的完成.

什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。
若相依 该用户已被删除
沙发
发表于 2015-1-21 12:26:28 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
深爱那片海 该用户已被删除
板凳
发表于 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 来自手机 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
飘灵儿 该用户已被删除
5#
发表于 2015-2-2 18:18:18 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
蒙在股里 该用户已被删除
6#
发表于 2015-2-7 01:23:35 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
不帅 该用户已被删除
7#
发表于 2015-2-26 16:48:01 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
只想知道 该用户已被删除
8#
发表于 2015-2-28 19:52:35 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
爱飞 该用户已被删除
9#
发表于 2015-3-10 07:43:11 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
再见西城 该用户已被删除
10#
发表于 2015-3-15 03:12:23 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
admin 该用户已被删除
11#
发表于 2015-3-19 12:50:33 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
灵魂腐蚀 该用户已被删除
12#
发表于 2015-3-27 20:20:10 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
简单生活 该用户已被删除
13#
发表于 2015-4-6 01:06:39 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
冷月葬花魂 该用户已被删除
14#
发表于 2015-4-12 14:35:55 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
15#
发表于 2015-4-17 12:59:38 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
透明 该用户已被删除
16#
发表于 2015-4-25 17:19:07 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
山那边是海 该用户已被删除
17#
发表于 2015-4-26 15:13:03 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
因胸联盟 该用户已被删除
18#
发表于 2015-4-28 03:41:38 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
变相怪杰 该用户已被删除
19#
发表于 2015-4-30 20:27:15 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
小女巫 该用户已被删除
20#
发表于 2015-5-3 13:52:47 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-30 00:48

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表