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

黑马程序员_网络编程的一些总结

2015-11-01 15:02 399 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、网络通讯三要素

1、IP地址

P地址可以唯一的标识网络的的计算机,现在常用的IPv4地址是用32个二进制位,即4个字节组成。当我们要在网络上和其他计算机通讯时就需要知道它的IP地址。当然IP地址是存数字,不好记,所以也可以通过域名地址来通讯,其实域名也是要解析成IP地址的。

java中的IP地址类。InetAddress,它是没有构造函数的,是通过某些静态方法返回本类的对象。
如:
static InetAddress getLocalHost();获取本机IP对象
static InetAddress getByName("IP地址");根据IP地址获取IP对象

static
InetAddress getAllBuyName("域名地址");根据域名地址获取所有IP对象,通过影视,一个域名地址对应的IP地址可以不是唯一的。

2、端口号

用于标识进程的逻辑地址。不同的进程都有不同的端口标识。
根据IP地址可以和网络上的计算机进行通信,但是计算机上有很多应用程序,发送的信息该由哪个程序接受处理呢,端口号就是标识了计算机上的应用程序。

范围是0~65535,其中0~1024是系统使用或者保留端口。

3、传输协议

网络上的计算机加入有各自的传输方法显然是混乱的,需要制定规则,传输协议就是通信的规则,主要有TCP和UDP。

①、UDP

1、不需要建立连接,将数据及源和目的封装成数据包发送;

2、以为面向无连接,是不可靠的协议;

3、不需要建立连接,速度快;

4、每个数据包大小限制在64K以内。

②、TCP

1、面向连接,形成数据传输的通道;

2、连接建立后可进行大数据传输;

3、需要通过三次握手建立连接,是可靠协议;

4、必须建立连接,效率会稍低。
注:三次握手原理

第一次:建立连接时,客户端发送SYN包(SYN=x)到服务器,并进入SYN_SEND状态,等待服务器确认。

第二次:服务器收到SYN包,必须确认客户端的SYN(ACK=x+1),同时自己也发送一个SYN包(SYN=y),即SYN+ACK包,此时服务器进入SYN_RECV状态。

第三次:客户端接收到服务器的SYN+ACK包,向服务器发送确认包(ACK=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

三次握手完成之后,客户端和服务器之间开始传送数据。

③、适用情况

UDP适用情况:对数据安全性要求不高,并且需要高效的传输,比如网络视频会议、桌面共享,需要快速接收数据,并丢失少量数据包不影响筒体效果。

TCP适用情况:对数据安全性要求较高,需要确定接受方确定,并建立连接传输大量数据。比如打电话、下载等。

二、Socket套接字

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

Socket和ServerSocket类位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。

在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。

不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

Socket中的常用方法:

java.net.Socket类继承与Object,有8个构造方法。其中三个使用最频繁的方法:

void accept():用于获取连接到服务端的客户端对象,并且返回一个客户端的Socket对象实例。该方法是一个阻塞式方法。

"阻塞"使程序运行暂时"停留",直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。

InputStream getInputStream():该方法获得网络连接输入,同时返回一个IutputStream对象实例,。

OutputStream getOutputStream():该方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。

 
注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: