仓酷云

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

[学习教程] 来看基于Java的UDP协定程序计划初探

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

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

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

x
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大.
在Java中举行收集编程是绝对简单的,由于J2SE中的java.net包已对各类通讯协定很好的举行了封装,本文次要报告怎样基于UDP(用户数据报)协定编写使用程序。
一般我们举行收集编程一样平常都是利用基于socket的TCP/IP编程,究竟TCP/IP使用十分的普遍,好比我们扫瞄互联网就是基于HTTP协定、我们发送邮件是经由过程SMTP协定。它们都是基于TCP/IP的。TCP/IP的传输最主要的是它能够包管数据抵达目标地,而UDP则分歧他其实不包管正确的传输,数占有大概丧失。假如有乐趣的话,读者能够参考《盘算机收集》一书。
在先容UDP编程之前有需要先容一个主要的类InetAddress,用最复杂的一句话形貌这个类的感化就是:它代表了一个IP地点。这十分主要在互联网中假如晓得了IP地点则意味着我们晓得了通讯的端点。这个类没有机关器可是有几个工场办法,经由过程传送分歧的参数比方IP,Hostname等来失掉一个InetAddress的实例,上面的这个小例子能够失掉我呆板的IP地点。
importjava.net.*;
publicclassTestNet
{
 publicstaticvoidmain(String[]args)throwsException
 {
  InetAddressia=InetAddress.getByName("compaq");
  StringipAdr=ia.getHostAddress();
  System.out.println(ipAdr);
 }
}
固然我的呆板的名字为compaq,假如你传进localhost的话将会失掉127.0.0.1。
接上去入手下手报告怎样利用UDP编程,这十分简单了解,我们应当起首机关一个数据报,然后把它发送进来,同时我们也能够吸收数据报。在java中供应了DatagramPacket和DatagramSocket两个类来完成如许的义务,前者卖力机关数据报后者卖力发送和吸收。看看DatagramPacket的机关器
DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)
DatagramPacket(byte[]buf,intoffset,intlength,InetAddressaddress,intport)
DatagramPacket(byte[]buf,intoffset,intlength,SocketAddressaddress)
DatagramPacket(byte[]buf,intlength,SocketAddressaddress)
DatagramPacket(byte[]buf,intlength)
DatagramPacket(byte[]buf,intoffset,intlength)
个中后面四个是为机关发送的数据报而用的,由于他们有InetAddress大概SocketInetAddress作为吸收端点的地点,前面一个则是为了承受数据报用的。
一样我们编写一个C/S模子的例子来讲明怎样利用这两个主要的类,假如对API还不熟习请参考Javadoc。上面的程序在本机机关一个工夫服务器,客户端来获得工夫。之前已经写过相似的工夫服务器程序,不外这个是基于UDP的编程。
importjava.io.*;
importjava.net.*;
importjava.util.*;
publicclassTimeServer{
 finalprivatestaticintDAYTIME_PORT=13;
 publicstaticvoidmain(Stringargs[])throws
  IOException{
   DatagramSocketsocket=newDatagramSocket(DAYTIME_PORT);
   while(true){
    bytebuffer[]=newbyte[256];
    DatagramPacketpacket=newDatagramPacket(buffer,buffer.length);
    socket.receive(packet);
    Stringdate=newDate().toString();
    buffer=date.getBytes();
    //Getresponseaddress/port
    //forclientfrompacket
    InetAddressaddress=packet.getAddress();
    intport=packet.getPort();
    packet=newDatagramPacket(buffer,buffer.length,address,port);
    socket.send(packet);
   }
 }
}
importjava.io.*;
importjava.net.*;
publicclassGetTime{
 finalprivatestaticintDAYTIME_PORT=13;
 publicstaticvoidmain(Stringargs[])throws
 IOException{
  if(args.length==0){
   System.err.println("Pleasespecifydaytimehost");
   System.exit(-1);
  }
  Stringhost=args[0];
  bytemessage[]=newbyte[256];
  InetAddressaddress=InetAddress.getByName(host);
  System.out.println("Checkingat:"+address);
  DatagramPacketpacket=newDatagramPacket(message,message.length,
  address,DAYTIME_PORT);
  DatagramSocketsocket=newDatagramSocket();
  socket.send(packet);
  packet=newDatagramPacket(message,message.length);
  socket.receive(packet);
  Stringtime=newString(packet.getData());
  System.out.println(Thetimeat"+host+"is:"+time);
  socket.close();
 }
}

C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊
再见西城 该用户已被删除
沙发
发表于 2015-1-21 07:44:19 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-21 07:44:19 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
若相依 该用户已被删除
地板
发表于 2015-1-21 07:44:19 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
小妖女 该用户已被删除
5#
发表于 2015-1-30 11:16:15 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
乐观 该用户已被删除
6#
 楼主| 发表于 2015-1-31 11:58:07 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
小女巫 该用户已被删除
7#
发表于 2015-2-2 15:07:47 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
精灵巫婆 该用户已被删除
8#
发表于 2015-2-5 11:07:52 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
蒙在股里 该用户已被删除
9#
发表于 2015-2-6 17:13:49 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
活着的死人 该用户已被删除
10#
发表于 2015-2-14 04:53:48 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
不帅 该用户已被删除
11#
发表于 2015-2-28 02:11:23 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
变相怪杰 该用户已被删除
12#
发表于 2015-3-9 18:23:17 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
柔情似水 该用户已被删除
13#
发表于 2015-3-17 00:10:21 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
兰色精灵 该用户已被删除
14#
发表于 2015-3-23 08:38:06 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-28 19:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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