`

套接字(Socket)

阅读更多
什么是套接字(Socket)转载:http://www.cnblogs.com/ruanbl/archive/2007/10/22/933430.html




应用层通过传输层进行数据通信时,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。    
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。    
服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连 接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客 户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
分享到:
评论

相关推荐

    linux 套接字 socket 函数 手册

    Linux 套接字 Socket 函数手册 本文档是 Linux 套接字 Socket 编程手册,涵盖了 Socket 编程的各个方面,包括套接字函数、字节操作函数、IPv4 地址转换函数、IPv4、IPv6 通用地址转换函数和 TCP 套接口函数等。 套...

    套接字Socket编程用主要API

    ### 套接字Socket编程主要API解析 #### 一、引言 在现代网络通信领域,套接字(Socket)编程是一种重要的技术手段,它允许不同计算机之间进行数据交换。本文将详细介绍网络编程中主要使用的Socket API,这些API是网络...

    原始套接字 socket

    尽做为想了解原始套接字或研究sniffer的朋友做示范操作 只要你具备相应的权限 只要在本机上运行本demo附带的exe 当你操作网络的时候就会把通过本机网卡的数据 给截获下来再gridlist中展示出来 目前只截获tcp udp ...

    套接字socket编程文档

    在IT领域,套接字(Socket)编程是网络通信的核心技术之一,它为应用程序提供了低级别的、进程间的通信机制。套接字允许不同计算机上的进程相互通信,无论是同在一个局域网还是跨越互联网。本篇文章将深入探讨套接字...

    套接字socket编程文档.rar_MultiGet-1.1.4_linux_linux socket_linux 编程_soc

    "套接字socket编程文档"可能包含了详细的代码示例,从创建套接字到实现完整的客户端-服务器通信流程,读者可以通过这些例子加深对Socket编程的理解。 七、MultiGet-1.1.4项目介绍 MultiGet是一个多线程下载工具,它...

    c++MFC基于TCP异步套接字socket局域网源码

    本文将深入探讨一个基于C++ MFC(Microsoft Foundation Classes)框架实现的TCP异步套接字socket局域网聊天应用的源码。这个应用展示了如何利用Visual Studio的MFC库创建一个稳定的TCP连接,以及如何实现服务器与...

    套接字(Socket)通信TCP聊天程序(含界面)

    在IT领域,套接字(Socket)是网络通信的基础组件,尤其在开发涉及客户端与服务器交互的应用时。本文将深入探讨“套接字(Socket)通信TCP聊天程序(含界面)”这一主题,包括如何使用Java中的Socket和ServerSocket...

    13-套接字Socket:Talk is cheap, show me the code1

    【套接字Socket编程详解】 套接字(Socket)是计算机网络编程中用于实现进程间通信的一种机制,它允许不同的设备或程序之间进行数据交换。Socket编程基于传输控制协议(TCP)或用户数据报协议(UDP),分别对应于...

    Linux系统编程(第七章 套接字socket).pdf

    ### Linux系统编程——第七章:套接字Socket #### 知识点概览 - **套接字(Socket)的概念** - **面向连接与非连接的套接字编程方法** - **IP地址处理** - **端口配置** - **字节序转换** - **地址转换与打印** - *...

    群聊功能 网络编程 套接字 socket qq 多线程

    多线程 群聊功能 网络编程 套接字 socket 实现群聊功能

    第13讲 套接字Socket:Talk is cheap, show me the code1

    【套接字Socket编程基础】 在计算机网络编程中,Socket是一种接口,允许应用程序与网络通信。"Talk is cheap, show me the code1"这句标题暗示我们将深入到实际的代码层面,了解如何利用Socket进行TCP和UDP协议的...

    JAVA网络编程资料(1)-Socket套接字—Java套接字编程.chm

    JAVA网络编程资料(1)-Socket套接字—Java套接字编程.chm

    网络通信 套接字 socket 代码

    套接字(Socket)是实现网络通信的一种基本机制,它是进程间通信(IPC,Inter-Process Communication)在网络层面上的体现。本文将深入探讨套接字的概念、TCP协议以及如何在代码中实现客户端和服务端的通信。 套接...

    VS2013中利用套接字Socket完成控制台客户端和服务器网络通信例程

    在本文中,我们将深入探讨如何在Visual Studio 2013中使用C++和套接字(Socket)技术实现一个简单的控制台客户端和服务器网络通信的示例。套接字是计算机网络编程中的基本组件,它允许不同设备之间的数据交换。在C++...

    VC套接字socket示例(带接收出错SOCKET_ERROR重启机制)

    在VC++环境中,套接字(Socket)是网络编程中的基本元素,用于实现进程间的通信。这个示例展示了如何在Windows环境下使用Visual C++(VC)进行基于套接字的网络通信,特别是在处理错误时,如何实现一个带有接收错误...

    通信套接字socket编程.docx

    1.1 Socket套接字简介 Socket位于传输层与应用层之间,作为两者之间的桥梁。它提供了一组API接口,使得程序员可以通过这些接口发送和接收数据,而无需关心TCP/IP协议的具体实现。Socket遵循门面设计模式,将复杂的...

    C++利用网络套接字Socket实现协议HTTP下载文件的源代码

    1. 创建套接字:使用`socket()`函数创建一个流式套接字(SOCK_STREAM),对应TCP协议。 2. 连接服务器:使用`connect()`函数连接到指定的IP地址和端口号。 3. 构建HTTP请求:编写GET请求字符串,包含请求方法、URL、...

    网络套接字实现服务器返回客户机发送数据

    在IT领域,网络通信是至关重要的部分,而网络套接字(Socket)是实现网络通信的基础工具。"网络套接字实现服务器返回客户机发送数据"这个标题涉及到的是客户端-服务器(Client-Server)架构中的数据交互过程。下面将...

    嵌入式操作系统套接字编程

    这是在linux平台下实现了聊天程序,网络套接字socket编程,还赋有实验报告,大家多多指教。

    基于winsock原始套接字的IP数据包的捕获与解析

    原始套接字(Raw Socket)是Winsock提供的一种套接字类型,允许开发者直接访问网络接口,捕获和发送原始的网络数据包。原始套接字可以用来捕获和解析网络数据包,实现网络嗅探和协议分析等功能。 IP数据包捕获 在...

Global site tag (gtag.js) - Google Analytics