仓酷云

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

[学习教程] 来看Java收集编程从进门到精晓(15):为何要利用SocketAddress来办理收集地点 ...

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

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

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

x
Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发
在利用Socket来毗连服务器时最复杂的体例就是间接利用IP和端口,但Socket类中的connect办法并未供应这类体例,而是利用SocketAddress类来向connect办法传送服务器的IP和端口。固然这类体例从外表上看要贫苦一些,但它会给我们带来别的一个优点,那就是收集地点的重用。
所谓收集地点的重用体现在两个方面:
1.经由过程创建一个SocketAddress对象,能够在屡次毗连统一个服务器时利用这个SocketAddress对象。
2.在Socket类中供应了两个办法:getRemoteSocketAddress和getLocalSocketAddress,经由过程这两个办法能够失掉服务器和本机的收集地点。并且所失掉的收集地点在响应的Socket对象封闭前任然可使用。上面是这两个办法的声明:
publicSocketAddressgetRemoteSocketAddress()
publicSocketAddressgetLocalSocketAddress()
不论在利用Socket类毗连服务器时是间接利用IP和端口,仍是利用SocketAddress,这两个办法都前往SocketAddress情势的收集地点。当Socket对象未毗连时这两个办法前往null,但要注重的是只要在Socket对象未毗连时这两个办法才前往null,而当已毗连乐成的Socket对象封闭后仍可以使用这两个办法失掉响应的收集地点。
固然下面曾屡次提到SocketAddress,但SocketAddress只是个笼统类,它除有一个默许的机关办法外,别的的办法都是abstract的,因而,我们必需利用SocketAddress的子类来创建SocketAddress对象。在JDK1.4中J只为我们供应了IP收集地点的完成类:java.net.InetSocketAddress。这个类是从SocketAddress承继的,我们能够经由过程以下的办法来创建SocketAddress对象。
SocketAddresssocketAddress=newInetSocketAddress(host,ip);
上面的代码演示了怎样经由过程SocketAddress来共享收集地点:
packagemynet;
importjava.net.*;

publicclassMySocketAddress
{
   publicstaticvoidmain(String[]args)
   {
       try
       {
           Socketsocket1=newSocket("www.ptpress.com.cn",80);
           SocketAddresssocketAddress=socket1.getRemoteSocketAddress();
           socket1.close();
           Socketsocket2=newSocket();
           //socket2.bind(newInetSocketAddress("192.168.18.252",0));
           socket2.connect(socketAddress);
           socket2.close();
           InetSocketAddressinetSocketAddress1=(InetSocketAddress)socketAddress;
           System.out.println("服务器域名:"
                           +inetSocketAddress1.getAddress().getHostName());
           System.out.println("服务器IP:"
                           +inetSocketAddress1.getAddress().getHostAddress());
           System.out.println("服务器端口:"+inetSocketAddress1.getPort());
           InetSocketAddressinetSocketAddress2=(InetSocketAddress)socket2
                           .getLocalSocketAddress();
           System.out.println("当地IP:"
                           +inetSocketAddress2.getAddress().getLocalHost()
                                           .getHostAddress());
           System.out.println("当地端口:"+inetSocketAddress2.getPort());
       }
       catch(Exceptione)
       {
           System.out.println(e.getMessage());
       }
   }
}
输入了局:
服务器域名:www.ptpress.com.cn
服务器IP:219.238.168.74
服务器端口:80
当地IP:192.168.18.253
当地端口:4250
假如屡次运转例程4-10后,当地端口的值大概在每次都纷歧样。这是由于在socket2在毗连时并未利用bind来绑定当地的端口,而这个当地端口是由体系在1024至65,535中随机拔取的,因而,在每次运转程序时这个当地端口纷歧定不异。

你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。
乐观 该用户已被删除
沙发
发表于 2015-1-20 20:58:01 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
再见西城 该用户已被删除
板凳
发表于 2015-1-29 06:57:37 | 只看该作者
是一种为 Internet发展的计算机语言
柔情似水 该用户已被删除
地板
发表于 2015-2-3 11:23:28 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
活着的死人 该用户已被删除
5#
发表于 2015-2-8 20:19:55 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
不帅 该用户已被删除
6#
发表于 2015-2-10 02:15:11 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
冷月葬花魂 该用户已被删除
7#
发表于 2015-2-23 00:03:52 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-7 04:23:05 | 只看该作者
是一种为 Internet发展的计算机语言
若相依 该用户已被删除
9#
发表于 2015-3-14 09:51:45 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
爱飞 该用户已被删除
10#
发表于 2015-3-21 01:36:59 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-14 22:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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