黑马程序员_网络编程的一些总结
来源:互联网 发布:天津买菜用什么软件 编辑:程序博客网 时间:2024/06/05 07:49
------<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,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。
0 0
- 黑马程序员_网络编程的一些总结
- 黑马程序员_网络编程的总结
- 黑马程序员_网络编程总结
- 黑马程序员_网络编程知识总结
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- noip2013 华容道 (bfs+spfa)
- Android:Gallery,ImageSwitcher 和GridView用法
- 代理模式 Proxy Pattern
- java基础测试题(1)
- (NO.00002)iOS游戏精灵战争雏形(八)
- 黑马程序员_网络编程的一些总结
- HDU 2579--Dating with girls(2)【BFS && 三维判重】
- 设计内存分配和释放两个函数
- TCP和UDP的区别
- js&jquery添加元素
- 大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合
- 《老人与狗》
- UML - 类图了解及使用
- 4.5 调试DIRECT3D应用程序