蒙在股里 发表于 2015-1-18 11:21:23

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

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 程序的运行效率。

活着的死人 发表于 2015-2-8 20:19:55

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

不帅 发表于 2015-2-10 02:15:11

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

冷月葬花魂 发表于 2015-2-23 00:03:52

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

灵魂腐蚀 发表于 2015-3-7 04:23:05

是一种为 Internet发展的计算机语言

若相依 发表于 2015-3-14 09:51:45

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

爱飞 发表于 2015-3-21 01:36:59

是一种使网页(Web Page)产生生动活泼画面的语言
页: [1]
查看完整版本: 来看Java收集编程从进门到精晓(15):为何要利用SocketAddress来办理收集地点 ...