应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题.多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据.为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口,区分不同应用程序进程间的网络通信和连接.生成套接字,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号.
Socket原意是"插座".通过将这3个参数结合起来,与一个"插座"Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务.
Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中.Host A上的程序A将一段信息写入Socket中,Socket的内容被Host A的网络管理软件访问,并将这段信息通过Host A的网络接口卡发送到Host B,Host B的网络接口卡接收到这段信息后,传送给Host B的网络管理软件,网络管理软件将这段信息保存在Host B的Socket中,然后程序B才能在Socket中阅读这段信息.
要通过互联网进行通信,至少需要一对套接字,一个运行于客户机端,称之为ClientSocket,另一个运行于服务器端,称之为serverSocket.
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:
服务器监听,客户端请求,连接确认.
服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态.
客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字.为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求.
连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了.而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求.
分享到:
相关推荐
1. **Socket类与ServerSocket类**: - `Socket`类代表网络通信中的客户端,用于连接服务器。 - `ServerSocket`类则代表服务器端,监听特定端口上的连接请求。 2. **建立连接**: - 客户端通过`Socket(String ...
1. **Socket基本概念**: - **套接字类型**:Socket分为两种类型,流式套接字(TCP)和数据报套接字(UDP)。TCP提供面向连接的、可靠的字节流服务,而UDP则是一种无连接的、不可靠的数据报服务。 - **IP地址与...
Java Socket学习是Java网络编程的重要组成部分,主要用于实现进程间的网络通信。Socket在计算机网络中扮演着数据传输的桥梁角色,它允许两个网络上的程序通过网络进行数据交换。在这个基础学习代码中,我们将深入...
在本“Socket学习资料”中,包含的资源有C语言SOCKET教程的CHM格式文档、两个C++源码文件(client.cpp和server.cpp)以及一本关于C语言之Socket的PDF教程,这些都是深入理解并实践Socket编程的有效资源。 首先,`...
1. **什么是Socket?** Socket是网络通信中的一个接口,它允许两个程序通过网络交换数据。在C#中,Socket类是System.Net.Sockets命名空间的一部分,提供了低级别的TCP/IP通信功能。 2. **TCP与UDP协议** 在使用...
在这个“简单socket通信,学习使用”的项目中,我们可以看到一个基础的Socket通信示例,这对于初学者理解网络通信的基本原理非常有帮助。 首先,我们需要理解Socket的概念。Socket在计算机网络中是一种通信端点,它...
这份"Socket网络编程学习笔记"涵盖了从基础概念到高级技术的全面知识,对于初学者来说是一份非常有价值的参考资料。以下是对这份笔记内容的详细解读: 1. **Socket基本概念**:Socket在计算机网络中扮演着桥梁的...
在 Android 开发中,Socket 通信是一种常见的网络编程技术,主要用于设备间的双向数据传输。本文将详细讲解 Android 中如何使用 Socket 进行通信,包括 Socket 的概念、工作原理以及在 Android 上实现客户端和服务器...
本资源“C#基础socket学习视频-1.zip”是针对初学者设计的一系列教程,旨在帮助他们理解和掌握C#中的Socket编程,特别是与TCP和UDP相关的基础知识。以下是这些视频课程可能涵盖的关键知识点的详细说明: 1. **...
Socket编程是计算机网络通信的核心技术之一,它允许两个或多个应用程序通过网络进行数据交换。在本文中,我们将深入探讨TCP和UDP两种主要的传输层协议,并结合Socket接口在实际编程中的应用。 首先,TCP...
1. **Socket基础**:Socket是网络通信中的一个概念,它代表了两台机器间进行数据交换的一个端点。在Android中,我们可以使用Java的`java.net.Socket`类来创建和管理Socket连接。Socket连接由一个IP地址和一个端口号...
1. **创建Socket**:调用`socket()`函数创建一个Socket实例。 2. **绑定**:服务器端使用`bind()`函数将其Socket与特定的IP地址和端口关联。 3. **监听**:服务器端调用`listen()`函数开始监听客户端的连接请求。 4....
SocketDemo 是一个专门为Java初学者设计的用于学习和理解Socket通信基础的实例项目。Socket编程是网络编程的重要组成部分,它提供了进程间通过网络进行通信的能力。在这个例子中,我们将深入探讨Socket编程的基本...
1. 创建Socket对象:`Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);` 2. 连接服务器:`socket.Connect(new IPEndPoint(IPAddress.Parse("服务器IP"), 端口号));` ...
Linux Socket编程是网络编程的重要组成部分,它提供了与TCP/IP协议族进行交互的API。Socket接口在Unix操作系统中首次被引入,现在广泛应用于各种...这份资料详细介绍了这些概念和操作,是学习Socket编程的宝贵资源。
1. **创建MFC项目**:打开Visual Studio 2013,选择“新建项目”,在MFC类别下创建一个基于对话框的应用程序。 2. **添加CAsyncSocket成员变量**:在对话框类的头文件中,声明一个CAsyncSocket类型的成员变量,如`...
1. **Socket的创建与连接**:学习如何使用ServerSocket创建服务器端监听端口,并用Socket建立客户端连接。 2. **数据传输**:理解输入输出流的概念,学会使用Socket的getInputStream()和getOutputStream()方法进行...
在.NET框架中,C#语言提供了强大的网络编程能力,特别是在使用...学习和掌握C#中的SOCKET异步传输,对于开发高效、稳定的网络应用至关重要。实践这些例子,加深理解,将有助于你更好地应对实际项目中的网络编程挑战。
总之,"很好的C# socket学习资料"提供了从基础到实践的全面学习体验,涵盖了Socket通信、客户端与服务器编程、并发处理、数据序列化等多个方面,是深入理解和掌握C#网络编程的宝贵资源。通过分析和实践EasyChat项目...
**SuperSocket库详解** SuperSocket是一款高性能、轻量级的C# Socket服务器开发框架,它为开发者提供了构建基于...通过学习和掌握SuperSocket,开发者可以快速构建出稳定、高效且具备高度定制能力的网络服务应用程序。