您的位置:首页 > 理论基础 > 计算机网络

Java 学习--网络编程(一)

2012-03-25 21:40 127 查看
Java 学习--网络编程(一)
一、网络通信的要素。
1、 IP。网络通信首先要找到通讯方的IP地址,在网络当中IP是连接在网络中的计算机的唯一标识。

2、 端口。数据要发送到对方指定的应用程序上,为了达到准确无误,将这些网络应用程序进行数字标识,这些数字标识就称为端口具体来说是逻辑端口。

3、 通讯协议。规定了双方进行通讯时需要遵守的规则。主要学习TCP/IP协议与UDP/IP协议。

二、Java中对IP地址处理。

在Java中有专门处理IP的类——InetAddress类:此类表示互联网协议 (IP) 地址。该类无构造函数,可以通过以下方法得到一个InetAddress的对象。

1、 static InetAddress[] getAllByName(String host)

在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。

2、static InetAddress getByAddress(byte[] addr)

在给定原始 IP 地址的情况下,返回InetAddress 对象。

3、static InetAddress getByAddress(String host, byte[] addr)

根据提供的主机名和 IP 地址创建InetAddress。

4、static InetAddress getByName(String host)

在给定主机名的情况下确定主机的 IP 地址。

5、static InetAddress getLocalHost()

返回本地主机。

可以调用如下方法获取IP:

1、 String getCanonicalHostName()

获取此 IP 地址的完全限定域名。

2、 String getHostAddress()

返回 IP 地址字符串(以文本表现形式)。

3、String getHostName()

获取此 IP 地址的主机名。

三、UDP与TCP

UDP,在通讯过程中将数据的源和目的封装成数据包,不需要建立连接,每个数据包的大小限制在64k之内,因为是无连接,所以是不可靠的,但是其通讯速度快。

TCP,在通讯过程中需要建立连接,并形成数据通道,在连接中可以传输大量数据,它是通过三次握手建立的连接,所以具有可靠性,但是因为需要先建立连接才能实现通讯,所以这种方式效率较低。

四、Socket

Socket是一种为网络服务提供的机制。在网络通讯的两端都有Socket,数据在两个Socket之间通过IO传输,网络通信其实质就是Socket间的通信。

UDP的Socket建立:

需要先了解两个类:DatagramSocket(此类表示用来发送和接收数据报包的套接字)与DatagramPacket(此类表示数据报包,数据报包用来实现无连接包投递服务)。

发送端:

1、 通过DatagramSocket创建udp的Socket服务。DatagramSocket ds = new DatagramSocket();

2、 确定数据,并封装成数据包。DatagramPacket dp = new DatagramPacket(…….)。

3、 通过udp的Socket服务将已有的数据包发送出去。ds.send(dp);

4、 关闭资源。ds.close();

接收端:

1、 通过DatagramSocket创建udp的Socket服务,通常在这里设置一个监听端口,用以指定该接收断处理哪个端口发来的数据。DatagramSocket ds = newDatagramSocket(int mark);

2、 定义一个用来存储接收到的数据的空数据包。DatagramPacket dp = newDatagramPacket(…….)。

3、 通过udp的Socket服务将将接收到的数据包存储在第2步中定义的空数据包中。ds.receive(dp);

4、 通过数据包的方法获取器中的数据。

InetAddress getAddress() 返回某台机器的 IP 地址,此数据报将要发往该机器或者是从该机器接收到的。

byte[] getData() 返回数据缓冲区。

int getLength() 返回将要发送或接收到的数据的长度。

int getOffset() 返回将要发送或接收到的数据的偏移量。

int getPort() 返回某台远程主机的端口号,此数据报将要发往该主机或者是从该主机接收到的。

SocketAddress getSocketAddress() 获取要将此包发送到的或发出此数据报的远程主机的 SocketAddress(通常为 IP 地址 + 端口号)。

5、 关闭资源。ds.close();

TCP的Socket建立:

TCP的Socket建立主要涉及两个类Socket类与ServerSocket类。Socket类实现客户端套接字(也可以就叫“套接字”可以称为端口)。套接字是两台机器间通信的端点。ServerSocket类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。

客户端:

1、 建立Socket服务,指定要连接的主机和端口。Socket s = new Socket(Stringhost, int port);

2、 获取Socket流中的输出流,将数据写到该流中,通过网络发送给服务端。OutputStream out = S.getOutputStream();

3、 获取Socket流中的输入流,获取服务端反馈的信息。InputStream in = S.getInputStream();

4、 关闭客户端。S.close();

服务端:

1. 建立ServerSocket服务,指定要接收的端口。ServerSocket ss = newServerSocket (int port);

2. 获取连接到服务端的客户端Socket。Socket s = ss.accept();

3. 获取Socket流中的输出流,将数据写到该流中,通过网络发送给服务端。OutputStream out = S.getOutputStream();

5、 获取Socket流中的输入流,获取服务端反馈的信息。InputStream in = S.getInputStream();

6、 关闭客户端。S.close();

7、 关闭服务端。ss.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: