|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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中随机拔取的,因而,在每次运转程序时这个当地端口纷歧定不异。
你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。 |
|