`
bboyuan
  • 浏览: 26219 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

(转)什么是套接字(Socket)?

阅读更多

(转)什么是套接字(Socket)?

应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要 通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接。
生成套接字,主要有3个参数:通信的目的IP地址、使用的传输 层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输 层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
 
Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。如图1:
Host A上的程序A将一段信息写入Socket中,Socket的内容被Host A的网络管理软件访问,并将这段信息通过Host A的网络接口卡发送到Host B,Host B的网络接口卡接收到这段信息后,传送给Host B的网络管理软件,网络管理软件将这段信息保存在Host B的Socket中,然后程序B才能在Socket中阅读这段信息。
 
要通过互联网进行通信,至少需要一对套接字,一个运行于客户机端,称之为ClientSocket,另一个运行于服务器端,称之为serverSocket。     
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。     
服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连 接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客 户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

分享到:
评论

相关推荐

    套接字socket编程文档

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

    原始套接字 socket

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

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

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

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

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

    基于Java的Socket套接字编程 源代码

    Java的Socket套接字编程是网络通信中的基础技术,它提供了两台计算机间低级别的连接。在Java中,Socket类和ServerSocket类是实现客户端-服务器通信的核心组件。本资源包含的是基于Java的Socket套接字编程的源代码...

    socket 套接字 Java 套接字 编程

    - Socket(套接字):在计算机网络中,Socket是应用程序通过网络进行通信的接口,它允许两个网络应用程序之间建立连接并进行数据传输。 - TCP/IP协议:Socket通常基于TCP/IP协议族工作,提供可靠的面向连接的通信...

    linux 套接字 socket 函数 手册

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

    MFC 套接字(Socket)文件传输

    而套接字(Socket)编程是网络通信的基础,它允许两个或多个设备通过网络交换数据。 "MFC套接字(Socket)文件传输"是利用MFC库中的Socket类进行文件的发送和接收。在这样的应用中,通常分为服务器端和客户端两部分...

    Socket套接字—Java套接字编程

    Socket套接字是Java编程语言中用于网络通信的核心组件,它是实现客户端-服务器模型的基础。在Java中,Socket和ServerSocket类提供了套接字编程的基本功能。本文将深入探讨Java套接字编程的相关知识点,包括Socket和...

    在MQL中操作socket套接字

    ### 在MQL中操作Socket套接字 #### 概述 MQL4作为一种专为MetaTrader 4平台设计的编程语言,主要用于开发自动交易系统、技术指标和其他交易工具。然而,MQL4自身的功能集相对有限,对于需要执行更为复杂的任务(如...

    大多数程序员所接触到的套接字(Socket)为两类:

    ### 套接字(Socket)的两种主要类型 在计算机网络编程中,套接字(Socket)是一种用于网络通信的编程接口。它允许不同进程之间的通信,无论是这些进程运行在同一台机器上还是通过网络相互连接。根据传输层协议的...

    socket套接字通信

    首先,我们要了解什么是套接字。套接字是操作系统提供的一种进程间通信(IPC)机制,尤其适用于跨网络的通信。它允许两个运行在网络中的应用程序通过TCP/IP协议交换数据。在TCP/IP模型中,套接字位于应用层和传输层...

    套接字通信socket

    1. **初始化**:首先,通过`socket()`函数创建套接字句柄,指定协议族和套接字类型。 2. **绑定**:使用`bind()`函数将套接字与特定的IP地址和端口号关联,使得其他机器可以通过这个地址和端口找到并连接到该服务器...

    java基于UNIX域套接字(unix domain socket)连接redis

    为了优化网络通信,有时我们会选择使用UNIX域套接字(UNIX Domain Socket,简称UDS)来代替传统的TCP/IP套接字进行进程间通信(IPC)。本篇将详细讲解如何在Java环境下,利用UNIX域套接字连接并操作Redis,以及涉及...

    套接字Socket编程用主要API

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

    Socket 套接字 通信连接

    Socket套接字是计算机网络编程中的一个重要概念,它提供了进程间的通信能力,使得不同设备上的应用程序可以通过网络进行数据交换。本文将深入探讨Socket通信连接的原理、步骤以及常见应用。 一、Socket概述 Socket...

    网络通信 套接字 socket 代码

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

    java中socket套接字定义与使用

    总的来说,Java中的Socket套接字是实现网络通信的核心工具,无论是基于TCP的稳定传输还是UDP的高效传输,都能通过Socket灵活地构建网络应用。在实际开发中,开发者应根据应用的需求和场景选择合适的通信协议,以实现...

    C++套接字编程实例详解

    套接字(Socket)是网络通信的基本构件,最初是由加利福尼亚大学Berkeley学院为UNIX开发的网络通信编程接口,它只能运行在UNIX操作系统,不支持DOS和Windows操作系统。随着Windows操作系统的日益推广,90年代初,...

    socket_套接字_

    在IT行业中,套接字(Socket)是一种网络通信机制,它允许不同的计算机通过网络进行数据交换。套接字是应用程序与网络协议栈之间的接口,它为程序员提供了底层网络通信的能力。在本文中,我们将深入探讨如何实现两台...

Global site tag (gtag.js) - Google Analytics