Socket传输模式
Sockets有两种主要的操作方式:面向连接的和无连接的面向连接的sockets操作就像一部电话他们必须建立一个连接和一人呼叫所有的事情在到达时的顺序与它们出发时的顺序时一样无连接的sockets操作就像是一个邮件投递没有什么保证多个邮件可能在到达时的顺序与出发时的顺序不一样
到底用哪种模式是邮应用程序的需要决定的如果可靠性更重要的话用面向连接的操作会好一些比如文件服务器需要他们的数据的正确性和有序性如果一些数据丢失了系统的有效性将会失去一些服务器比如间歇性地发送一些数据块如果数据丢了的话服务器并不想要再重新发过一次因为当数据到达的时候它可能已经过时了确保数据的有序性和正确性需要额外的操作的内存消耗额外的费用将会降低系统的回应速率
无连接的操作使用数据报协议一个数据报是一个独立的单元它包含了所有的这次投递的信息把它想象成一个信封吧它有目的地址和要发送的内容这个模式下的socket不需要连接一个目的的socket它只是简单地投出数据报无连接的操作是快速的和高效的但是数据安全性不佳
面向连接的操作使用TCP协议一个这个模式下的socket必须在发送数据之前与目的地的socket取得一个连接一旦连接建立了sockets就可以使用一个流接口:打开读写关闭所有的发送的信息都会在另一端以同样的顺序被接收面向连接的操作比无连接的操作效率更低但是数据的安全性更高
SUN一直是网络建设的支持者所以在Java中支持sockets就不足为奇了实际上Java降低了建立一个sockets程序的难度每一个传输模式都被封装到了不同的类中面向连接的类将会首先被我们讨论
Sockets有两种主要的操作方式:面向连接的和无连接的面向连接的sockets操作就像一部电话他们必须建立一个连接和一人呼叫所有的事情在到达时的顺序与它们出发时的顺序时一样无连接的sockets操作就像是一个邮件投递没有什么保证多个邮件可能在到达时的顺序与出发时的顺序不一样
到底用哪种模式是邮应用程序的需要决定的如果可靠性更重要的话用面向连接的操作会好一些比如文件服务器需要他们的数据的正确性和有序性如果一些数据丢失了系统的有效性将会失去一些服务器比如间歇性地发送一些数据块如果数据丢了的话服务器并不想要再重新发过一次因为当数据到达的时候它可能已经过时了确保数据的有序性和正确性需要额外的操作的内存消耗额外的费用将会降低系统的回应速率
无连接的操作使用数据报协议一个数据报是一个独立的单元它包含了所有的这次投递的信息把它想象成一个信封吧它有目的地址和要发送的内容这个模式下的socket不需要连接一个目的的socket它只是简单地投出数据报无连接的操作是快速的和高效的但是数据安全性不佳
面向连接的操作使用TCP协议一个这个模式下的socket必须在发送数据之前与目的地的socket取得一个连接一旦连接建立了sockets就可以使用一个流接口:打开读写关闭所有的发送的信息都会在另一端以同样的顺序被接收面向连接的操作比无连接的操作效率更低但是数据的安全性更高
SUN一直是网络建设的支持者所以在Java中支持sockets就不足为奇了实际上Java降低了建立一个sockets程序的难度每一个传输模式都被封装到了不同的类中面向连接的类将会首先被我们讨论