黑马程序员_网络编程的一些总结
2015-11-01 15:02
399 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
如:
static InetAddress getLocalHost();获取本机IP对象
static InetAddress getByName("IP地址");根据IP地址获取IP对象
static
InetAddress getAllBuyName("域名地址");根据域名地址获取所有IP对象,通过影视,一个域名地址对应的IP地址可以不是唯一的。
根据IP地址可以和网络上的计算机进行通信,但是计算机上有很多应用程序,发送的信息该由哪个程序接受处理呢,端口号就是标识了计算机上的应用程序。
范围是0~65535,其中0~1024是系统使用或者保留端口。
①、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和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,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。
一、网络通讯三要素
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,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。
相关文章推荐
- 获得网络视频缩略图并且播放
- 5.nodejs权威指南--HTTP
- 什么是前同步码 (preamble) http://www.blogbus.com/sunnyleevip-logs/160791598.html
- Linux改IP后务必重启网络服务
- 对TCP性能的考虑
- 使用RStudio学习一个简单神经网络
- 4.nodejs权威指南--TCP和UDP
- Android HTTP下载文件
- web开发 http生产者、消费者请求限定(跟着开涛学SpringMVC)
- Android网络开发之OkHttp--基本用法POST
- 腾讯职场等级(转载自网络)
- OSI和TCP/IP
- Android网络开发之OkHttp--基本用法GET
- 十一行Python代码实现一个神经网络(第一部分)
- Android手机浏览器访问本地网络相关问题
- TCP连接
- HttpServletRequest【servlet】
- HTTP协议详解
- Xcode7.0网络请求&ARC、MRC程序运行
- 【视频教程】典型 TCP 攻击实验