Java初级网络编程


首先来回忆一些计算机网络的知识吧,计算机网络按照不同的分类方式来划分,可以分为不同的类型:

*按照网络规模和范围可以简单划分为:局域网,城域网和广域网;

*按照网络的拓扑结构可以分为:星型网络、总线网络、环线网络、树型网络、星型环线网络等;

*按照网络的传输介质来划分:双绞线、同轴电缆、管道纤维和实现戒指等。

OSI的7成网络模型为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;物理层和数据链路层是数据传输的基础层,通过网络层连接交换网络服务数据单元,在系统之间提供可靠的、透明的数据传送、提供端到端的错误回复和流的控制,提供两个进程间的连接管理功能,处理被传输数据的表示问题,完成数据转换、格式化和文本压缩、是直接面对用户的一层,提供OSI用户服务。

在计算机网络中曾经学到了很多的协议,如ICMP,UDP, TCP/IP等等协议,具体协议内容可以看看计算机网络那本书,上面说的很详细,下面说一下TCP/IP协议:IP协议制保证计算机能发送和接受分组数据,而TCP协议则可以提供一个可靠的、可控制的信息流传输服务;TCP/IP协议是Internet尽可能成为一个分散、无序的网络,TCP/IP最早出现在UNIX系统中,现在几乎所有的厂商和操作系统都已经支持它了,同时,TCP/IP也是Internet的基础协议,其通常可以被看成一个4层模型:应用层、传输层、网络层以及链路层,可以与OSI的7层网络协议对比记忆。

在网络中有几个十分重要的属性,即IP地址,子网掩码和端口号,IP地址,众所周知,用来在Internet中表示自己的计算机的位置,现在的IPV4是32位的,分为A类地址,B类地址以及C类地址,D、E等等保留的地址,以后IPV6会随着网卡的增多而被应用进来,因为其支持64位,所以对于以后几十年甚至几百年是够用了;一般来说子网掩码是相对于IP地址来划分的:如A类的为255.0.0.0,B类的为:255.255.0.0,C类的为:255.255.255.0;端口号:计算机的端口是计算机与外界交流的出入口,它包括硬件和软件两方面的涵义,硬件意义上的端口,有常称为接口,如某些进程会使用相应的端口,而软件意义上的端口,一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的数据结构。

有一个类专门用于代表一个IP地址,InetAddress:

InetAddress在java.net包中,它没有任何的构造器,可以通过它自身的静态方法来得到InetAddress类的实例:

package net;
importjava.net.InetAddress;
importjava.net.UnknownHostException;
public classHello {
      public static void main(String[] args)throws Exception {
          InetAddress ia;
          ia = InetAddress.getLocalHost();
          System.out.println(ia);
      }
}

输出了本机的IP地址:HXJ8Z1OJ7AS96JT/192.168.1.2

Socket:套接字Socket是指向基于网路的另一个应用成语的通信链的引用,应用程序通常通过“套接字”向网络发出请求或者应答网络请求,Socket大致位于OSI参考模型的会话层,而会话层负责控制和管理两台计算机之间的数据流交换。简而言之,一台计算机和另一台计算机进行对话的socket将会建立一个“连接通道”,我们可以使用这个通道在计算机之间交换数据。

下面介绍两个与Socket通信有关的类:java.net.ServerSocket/java.net.Socket,这两个类用于建立一个双向的通信,ServerSocket用于建立等待来自客户端访问的“服务器”,要建立一个Socket通信应用,首先需要建立一个服务器端的应用:

ServerSocket构造器:

ServerSocket():用于建立一个Socket,未绑定端口;

ServerSocket(intport):用指定的端口port来创建一个侦听Socket;

ServerSocket(intport,int backlog):加上一个用来改变连接队列长度的参数backlog;

ServerSocket(intport,int backlog,InetAddress localAddr):在机器存在多个IP地址的情况下,允许通过localAddr这个参数来指定侦听的IP地址

ServerSocket的方法:

Socket accept():用于接受一个客户机的连接,如果有客户机连接到ServerSocket所创建的侦听端口,则返回一个Socket实例,否则,将一直等待。

void close():关闭Socket连接。

而Socket用于表示网络间的通信,Socket类:

Socket():建立一个没有连接的Socket;

Socket(InetAddressaddress,int port):建立一个指定主机IP地址address,端口port上的Socket连接;

Socket(String host,intport):建立一个指定主机名称host,端口port上的Socket连接;

Socket常用方法:

getInputStream():得到一个InputStream流,可以像使用任何其他数据流一样使用该对象;

getOutputStream():得到一个OutputSream流。

Socket通过getInputStream和getOutputStream来读写数据。

接下来请看第2页精彩内容

  • 1
  • 2
  • 下一页

相关内容