什么是Socket,为什么要用Socket
2011-04-14 09:07
260 查看
应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket )的接口,区分不同应用程序进程间的网络通信和连接。
生成套接字,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket 原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket 绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
要通过互联网进行通信,至少需要一对套接字,一个运行于客户机端,称之为ClientSocket ,另一个运行于服务器端,称之为serverSocket 。
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的 描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
生成套接字,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket 原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket 绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
要通过互联网进行通信,至少需要一对套接字,一个运行于客户机端,称之为ClientSocket ,另一个运行于服务器端,称之为serverSocket 。
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的 描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
相关文章推荐
- 什么是Socket,为什么要用Socket
- 什么是Socket,为什么要用Socket
- 什么是Socket,为什么要用Socket
- 什么是Socket,为什么要用Socket
- 什么是Socket,为什么要用Socket
- 什么是Socket,为什么要用Socket
- java--什么是Socket,为什么要用Socket
- 什么是句柄?为什么会有句柄?HANDLE
- php转义字符怎么用?echo "gde/n/r/t/v hdiiri";这样有什么不对么?为什么没有换行和tab?
- String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?
- java中getter 和 setter 方法有什么意义?为什么不用public代替GS?
- Socket是什么
- 什么是句柄?为什么会有句柄?HANDLE
- WebSocket 是什么原理?为什么可以实现持久连接?
- 黑马程序员------静态方法中为什么不能写this和super?这两者之间的区别是什么呢? Day02
- xml是什么,为什么要用xml
- apache和tomcat有什么不同,为什么要整合apache 和tomcat?
- 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- 什么是TCP 三次握手及为什么进行三次握手?
- 你如何理解 HTML5 的 section?会在什么场景使用?为什么这些场景使用 section 而不是 div?