不帅 发表于 2015-1-18 11:21:23

发布一篇Java收集编程从进门到精晓(14):多种多样的创建收集毗连的体例 ...

首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。
在上一篇文章中我们会商了Socket类的基础用法,并给出的例子中利用Socket类毗连服务器时利用了一种最复杂的毗连体例,也就是经由过程IP和端标语来毗连服务器。而为了使毗连服务器的体例更天真,Socket类不但能够经由过程本身的机关办法毗连服务器,并且也能够经由过程connect办法来毗连数据库。
1、经由过程机关办法毗连服务器
我们能够经由过程6个重载机关函数以分歧的体例来毗连服务器。这6个重载的机关函数能够分为两类:
1.主动选择IP
这类体例是最经常使用的。所谓主动选择IP,是指当本机有多块网卡大概在一个网卡上绑定了多个IP时,Socket类会主动为我们选择一个可用的IP.在上述6个机关办法中有4个是利用这类办法来毗连服务器的。
(1)publicSocket(Stringhost,intport)
这是最经常使用的机关办法,在后面的例子中就是利用的这个机关办法。在利用时只必要供应一个字符串范例的IP或域名和一个整型的端标语便可。在这个机关办法中大概会抛出两个毛病:UnknownHostException和IOException.产生第一个毛病的缘故原由是我们供应的host其实不存在或分歧法,而别的的毛病被回为IO毛病。因而,这个机关办法的完全界说是:
public Socket(String host, int port) throws UnknownHostException, IOException
(2)publicSocket(InetAddressinetaddress,intport)
这个机关办法和第一种机关办法相似,只是将字符串情势的host改成InetAddress对象范例了。在这个机关办法中之以是要利用InetAddress类次要是由于思索到在程序中大概必要利用Socket类屡次毗连统一个IP或域名,如许利用InetAddress类的效力对照高。别的,在利用字符串范例的host毗连服务器时,大概会产生两个毛病,但利用InetAddress对象来形貌host,只会产生IOException毛病,这是由于当你将IP或域名传给InetAddress时,InetAddress会主动反省这个IP或域名,假如这个IP或域名有效,那末InetAddress就会抛出UnknownHostException毛病,而不会由Socket类的机关办法抛出。因而,这个机关办法的完全界说是:
public Socket(InetAddress inetaddress, int port) throws IOException
(3)publicSocket(Stringhost,intport,booleanstream)
这个机关办法和第一种机关办法差未几,只是多了一个boolean范例的stream参数。假如这个stream为true,那末这个机关办法和第一种机关办法完整一样。假如stream为false,则利用UDP协定创建一个UDP毗连(UDP将鄙人面的章节具体会商,在这里只需晓得它和TCP最年夜的区分是UDP是面向无毗连的,而TCP是面向有毗连的),大概是现在Sun的开辟职员在编写Socket类时还未思索编写处置UDP毗连的DatagramSocket类,以是才将创建UDP毗连的功效到场到Socket类中,不外Sun在厥后的JDK中到场了DatagramSocket类,以是,这个机关办法就没甚么用了,因而,Sun将其设为了Deprecated标志,也就是说,这个机关办法在今后的JDK版本中能够会被删除。其于以上缘故原由,在利用Java编写收集程序时,只管不要利用这个机关办法来创建UDP毗连。
(4)publicSocket(InetAddressinetaddress,intport,booleanflag)
这个机关办法和第三种机关办法的flag标志的寄义一样,也是不倡议利用的。
上面的代码演示上述4种机关办法的利用:
packagemysocket;

import java.net.*;
import java.io.*;

public classMoreConnection
{
    private static void closeSocket(Socket socket)
    {
        if (socket != null)
            try
            {
                socket.close();
            }
            catch (Exception e) { }
    }

    public static void main(String[] args)
    {
        Socket socket1 = null, socket2 = null, socket3 = null, socket4 = null;
        try
        {
            // 假如将www.ptpress.com.cn改成别的不存在的域名,将抛出UnknownHostException毛病
            // 测试public Socket(String host, int port)
            socket1 = new Socket("www.ptpress.com.cn", 80);
            System.out.println("socket1毗连乐成!");
            // 测试public Socket(InetAddress inetaddress, int port)
            socket2 = new Socket(InetAddress.getByName("www.ptpress.com.cn"),80);
            System.out.println("socket2毗连乐成!");

            // 上面的两种创建毗连的体例其实不倡议利用
            // 测试public Socket(String host, int port, boolean stream)
            socket3 = new Socket("www.ptpress.com.cn", 80, false);
            System.out.println("socket3毗连乐成!");
            // 测试public Socket(InetAddress inetaddress, int i, boolean flag)
            socket4 = new Socket(InetAddress.getByName("www.ptpress.com.cn"),80, false);
            System.out.println("socket4毗连乐成!");
        }
        catch (UnknownHostException e)
        {
            System.out.println("UnknownHostException 被抛出!");
        }
        catch (IOException e)
        {
            System.out.println("IOException 被抛出!");
        }
        finally
        {
            closeSocket(socket1);
            closeSocket(socket2);
            closeSocket(socket3);
            closeSocket(socket4);
        }
    }
}
<p>
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.

冷月葬花魂 发表于 2015-1-20 20:58:01

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

飘灵儿 发表于 2015-1-24 15:31:37

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

只想知道 发表于 2015-1-31 07:19:05

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

柔情似水 发表于 2015-2-6 18:24:20

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

山那边是海 发表于 2015-2-7 16:18:27

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

活着的死人 发表于 2015-2-22 15:55:37

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

admin 发表于 2015-3-7 00:42:03

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

金色的骷髅 发表于 2015-3-13 23:08:38

是一种使网页(Web Page)产生生动活泼画面的语言

因胸联盟 发表于 2015-3-20 21:23:02

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
页: [1]
查看完整版本: 发布一篇Java收集编程从进门到精晓(14):多种多样的创建收集毗连的体例 ...