Http和Socket连接区别:
相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过浅显理解能对初学者有所帮助.
1、TCP连接
要想明白Socket连接,先要明白TCP连接.手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在"无差别"的网络之上.
建立起一个TCP连接需要经过"三次握手":
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据.理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去.断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过"四次握手"(过程就不细写了,就是服务器和客户端交互,最终确定断开.
2、HTTP连接(短连接,一定时间发送一次连接请求)
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用.
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接.从建立连接到关闭连接的过程称为"一次连接".
1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接.
2)在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求.
由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种"短连接",要保持客户端程序的在线状态,需要不断地向服务器发起连接请求.通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次"保持连接"的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端"在线",若服务器长时间无法收到客户端的请求,则认为客户端"下线",若客户端长时间无法收到服务器的回复,则认为网络已经断开.
另外:
由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开.但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致Socket连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态.
而HTTP连接使用的是"请求—响应"的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据.
很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步.此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在"询问"服务器是否有新的数据,如果有就将数据传给客户端.
分享到:
相关推荐
以上就是关于Java Socket编程的一些关键知识点,通过学习和实践,你可以掌握如何在Java中实现网络通信,以及如何处理HTTP请求和响应。结合提供的文件资料,可以深入研究具体的实现细节和常见问题的解决方法。
2. **创建Socket**: 在C#中,我们可以使用`new Socket(AddressFamily, SocketType, ProtocolType)`构造函数创建Socket实例。例如,创建一个TCP Socket: ```csharp Socket serverSocket = new Socket(Address...
本文将深入探讨C# Socket入门学习的关键知识点,帮助初学者理解并掌握Socket编程的基本原理和实践。 1. **什么是Socket?** Socket是网络通信中的一个接口,它允许两个程序通过网络交换数据。在C#中,Socket类是...
这份"Socket网络编程学习笔记"涵盖了从基础概念到高级技术的全面知识,对于初学者来说是一份非常有价值的参考资料。以下是对这份笔记内容的详细解读: 1. **Socket基本概念**:Socket在计算机网络中扮演着桥梁的...
2. 获取 Socket 的输入输出流,准备进行数据读写。 3. 使用流进行数据传输。 4. 完成通信后,关闭所有打开的流和 Socket。 在处理多个客户端连接时,可以利用 ExecutorService 和 Thread 模型来管理并发。`...
2. **TCP/IP协议**:Socket通常基于TCP/IP协议栈工作,TCP是一种面向连接的、可靠的传输层协议,它保证了数据包的顺序和可靠性。在建立Socket连接时,客户端首先需要通过TCP三次握手与服务器建立连接。 3. **创建...
2. **绑定**:服务器端使用`bind()`函数将其Socket与特定的IP地址和端口关联。 3. **监听**:服务器端调用`listen()`函数开始监听客户端的连接请求。 4. **连接**:客户端调用`connect()`函数尝试连接到服务器的...
本资源“C#基础socket学习视频-1.zip”是针对初学者设计的一系列教程,旨在帮助他们理解和掌握C#中的Socket编程,特别是与TCP和UDP相关的基础知识。以下是这些视频课程可能涵盖的关键知识点的详细说明: 1. **...
2. 连接服务器:`socket.Connect(new IPEndPoint(IPAddress.Parse("服务器IP"), 端口号));` 3. 发送数据:`socket.Send(Encoding.ASCII.GetBytes("要发送的数据"));` 4. 接收数据:`byte[] buffer = new byte[1024];...
2. **添加CAsyncSocket成员变量**:在对话框类的头文件中,声明一个CAsyncSocket类型的成员变量,如`CAsyncSocket m_Socket;`。 3. **初始化Socket**:在 OnInitDialog() 函数中,初始化Socket对象,设置其为监听...
在.NET框架中,C#语言提供了强大的网络编程能力,特别是在使用...学习和掌握C#中的SOCKET异步传输,对于开发高效、稳定的网络应用至关重要。实践这些例子,加深理解,将有助于你更好地应对实际项目中的网络编程挑战。
2. **数据传输**:理解输入输出流的概念,学会使用Socket的getInputStream()和getOutputStream()方法进行数据的发送和接收。 3. **异常处理**:熟悉Socket编程中的常见异常,如IOException,以及如何优雅地处理这些...
包括 1.TCP-IP详解卷1:协议 中文版PDF 2.高级TCP/IP编程 中文版PDF 3.TCPIP Sockets in Java 2nd 英文版PDF, 4.Advanced JAVA networking英文版PDF ...5.中文版Socket Java教程 6.Socket Java学习笔记 7.UDP简单案例
**SuperSocket库详解** SuperSocket是一款高性能、轻量级的C# Socket服务器开发框架,它为开发者提供了构建基于...通过学习和掌握SuperSocket,开发者可以快速构建出稳定、高效且具备高度定制能力的网络服务应用程序。
2. **创建TCP客户端**:输入目标服务器的IP地址和端口号,SocketTool可以主动发起连接,用于测试服务器的响应。同样,你可以在此模式下发送和接收数据。 3. **模拟UDP通信**:UDP(User Datagram Protocol)是一种...
2. **Java中的Socket API**: - `java.net.Socket` 类代表TCP Socket,用于建立与服务器的连接,并提供发送和接收数据的通道。 - `java.net.ServerSocket` 类用于创建服务器端监听套接字,等待客户端的连接请求。 ...
本篇文章将根据给定文件“linux socket学习.pdf”的内容进行展开,重点讨论 socket 的定义、如何创建 socket 以及 socket 与其他常见 I/O 操作的区别。 #### 二、理解 Socket ##### 2.1 定义 Socket Socket 可以...
本文将深入探讨"socket学习的例子",并以提供的"NetTest"项目为例,阐述如何在C#中实现socket监听和数据发送。 首先,我们需要了解Socket的基本概念。Socket是网络通信中的一个端点,它允许两个或多个应用程序通过...
以下是对Socket学习笔记的详细解释: 1. **Socket构造方法**: - `Socket()`:创建一个未连接的Socket对象。 - `Socket(InetAddress address, int port)`:创建一个Socket并连接到指定的IP地址和端口。 - `...
"VC_MFC中socket编程详解.pdf"和"第2章_MFC_Socket编程.ppt"应该深入探讨了在MFC框架下如何使用Csocket类进行Socket编程,涵盖了从初始化Socket到网络通信的完整流程。这些资料可能会讲解如何创建Csocket对象,绑定...