java网络编程

来源:互联网 发布:sqlite数据库下载 编辑:程序博客网 时间:2024/06/01 20:07

一、java网络的四个重要类

    1.一个URL对象通常包含最基本的三部分信息:协议(java虚拟机支持的协议http、ftp、file等)、地址(能连接的有效IP或域名)、资源(主机上的任何一个文件)。URL对象通过public final InputStream openStream()方法可以读取URL中的资源。

    2.InetAddress类的对象含有一个Internet主机地址的域名和IP地址,此类表示互联网协议 (IP) 地址。

      该类的静态方法getByName(String,s)通过参数字符串参数s获得InetAddress对象
      该类中的getHostName()方法获得InetAddress对象所包含的域名
       getHostAddress()方法获得InetAddress对象所包含的IP地址
      该类的静态方法getLocalHost()或得包含本地机的域名和IP的InetAddress对象

    3.Socket套接字

      Socket 用于客户端的程序使用,需传入一个服务器的IP地址和端口号
      可以使用getInputStream()方法可以获取服务器放入线路的信息
      可以使用getOutputStream()方法可以把信息放入到线路中传送个服务器
      实际应用中我们通常将这两个流写入到DataInputStream流或DataOutputStream中。

    4.ServerSocket与Socket对应的服务器中要有ServerSocket类等待客户端的呼叫,该类需传入一个端口号设定
该服务器监听的是那个接口。当端口被占用时会抛出IOException异常。

       ServerSocket对象建立后可以使用accept()方法接受客户端的套接字连接,accept()方法会返回一个与客户端Socket相连接的Socket对象可以使用getInputStream()和getOutputStream()方法从而实现服务器与客户端得相连,需注意的是这是会发生线程阻塞因为在客户端没有放入信息之前服务器就开始读取信息了,直到服务器读取到信息才会执行下面的代码,反之亦然。还有accept方法也会堵塞线程直到接收到客户端的链接。建立连接以后,可以使用getInetAddress()方法获得彼此的IP和域名。ServerSocket对象可以调用setSoTimeout(int timeout)方法设置accept方法堵塞的时间,超时就会触发SocketTimeoutException异常

    5.网络传输每个计算机上都有四层网络协议 应用层、传输层、网络层、链路层。

        一个计算机与另一个计算机的通信如下

        数据经过应用层时加上ap头表明这个数据是哪个应用程序发出的

        经过传输层时再加上Tcp以确保数据能够正确完整的发到对方的传输层

        经过网络层加上Ip以说明数据是发送给谁的

        经过链路层时在数据的前后加上帧头和帧尾(因为数据在网络上是以帧的形式传输的)

        数据在计算机上从网卡上发送到网络,在网络中经过若干路由到对方网卡。

        在对方计算机上每经过一层协议就去掉相应的头或尾文件

         先加包再解包。

    6.网络通信示意图:




0 0
原创粉丝点击