socket接口协议(怎么获取socket的协议类型)

:暂无数据 2026-07-05 17:00:02 :0

socket接口协议(怎么获取socket的协议类型)

大家好,今天小编来为大家解答以下的问题,关于socket接口协议,怎么获取socket的协议类型这个很多人还不知道,现在让我们一起来看看吧!

本文目录

怎么获取socket的协议类型

Socket协议的形象描述
  socket的英文原义是“孔”或“插座”。在这里作为4BDS UNIX的进程通信机制,取后一种意思。socket非常类似于电话插座。以一个国家级电话网为例。电话的通话双方相当于相互通信的2个进程,区号是它的 网络地址;区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于socket号。任何用户在通话之前,首先要占有一部电话机,相当于 申请一个socket;同时要知道对方的号码,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还 要拨对方区号,相当于给出网络地址)。对方假如在场并空闲(相当于通信的另一主机开机且可以接受连接请求),拿起电话话筒,双方就可以正式通话,相当于连 接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一 方挂起电话机相当于关闭socket,撤消连接。
  在电话系统中,一般用户只能感受到本地电话机和对方电话号码的存在,建立通话的过程,话音传输 的过程以及整个电话系统的技术细节对他都是透明的,这也与socket机制非常相似。socket利用网间网通信设施实现进程通信,但它对通信设施的细节 毫不关心,只要通信设施能提供足够的通信能力,它就满足了。
  至此,我们对socket进行了直观的描述。抽象出来,socket实质上提供了进程通信的端 点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须各自拥有一台电话机一样。在网间网内 部,每一个socket用一个半相关描述:
  (协议,本地地址,本地端口)
  一个完整的socket有一个本地唯一的socket号,由操作系统分配。
  最重要的是,socket 是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的socket 系统调用。客户随机申请一个socket (相当于一个想打电话的人可以在任何一台入网电话上拨号呼叫),系统为之分配一个socket号;服务器拥有全局公认的 socket ,任何客户都可以向它发出连接请求和信息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码)。
  socket利用客户/服务器模式巧妙地解决了进程之间建立通信连接的问题。服务器 socket 半相关为全局所公认非常重要。读者不妨考虑一下,两个完全随机的用户进程之间如何建立通信?假如通信双方没有任何一方的socket 固定,就好比打电话的双方彼此不知道对方的电话号码,要通话是不可能的。
  -----
***隐藏网址***
  在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。 每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,象一个多孔插座。一台主机犹如布满 各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
  -----
  1.什么是socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket 是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等 的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类 及其子类完成的。
  重要的Socket API:java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。
  Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。
  getInputStream方法获得网络连接输入,同时返回一个IutputStream对象实例。
  getOutputStream方法连接的另一端将得到输入,同时返回一个 OutputStream对象实例。 注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对 象,通常都会被另一个流对象使用。
  2.如何开发一个Server-Client模型的程序 开发原理:
  服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。
  客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。
  Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员 可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返 回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
  常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式 Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的 Socket,对应于无连接的UDP服务应用。 Socket建立为了建立Socket,程序可以调用Socket函数,该函数返回一个类似于文件描述符的句柄。socket函数原型为:int socket(int domain, int type, int protocol);domain指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP协议族);type参数指定socket的 类型:SOCK_STREAM 或SOCK_DGRAM,Socket接口还定义了原始Socket(SOCK_RAW),允许程序使用低层协议;protocol通常赋值"0"。 Socket()调用返回一个整型socket描述符,你可以在后面的调用使用它。 Socket描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用Socket函数时,socket执行体将建立一个Socket,实际上"建 立一个Socket"意味着为一个Socket数据结构分配存储空间。 Socket执行体为你管理描述符表。两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端 口。Socket数据结构中包含这五种信息。 socket在测量软件中的使用也很广泛
二 socket函数
  The socket function creates a socket that is bound to a specific service provider.
  SOCKET socket(
  int af,
  int type,
  int protocol
  );
  Parameters
  afAddress family specification.
  type
  Type specification for the new socket.
  The following are the only two type specifications supported for Windows Sockets 1.1: Type Explanation
  SOCK_STREAM Provides sequenced, reliable, two-way, connection-based byte streams with an OOB data transmission mechanism. Uses TCP for the Internet address family.
  SOCK_DGRAM Supports datagrams, which are connectionless, unreliable buffers of a fixed (typically small) maximum length. Uses UDP for the Internet address family.
  In Windows Sockets 2, many new socket types will be introduced and no longer need to be specified, since an application can dynamically discover the attributes of each available transport protocol through the WSAEnumProtocols function. Socket type definitions appear in Winsock2.h, which will be periodically updated as new socket types, address families, and protocols are defined.
  protocol
  Protocol to be used with the socket that is specific to the indicated address family.
  Return Values
  If no error occurs, socket returns a descriptor referencing the new socket. Otherwise, a value of INVALID_SOCKET is returned, and a specific error code can be retrieved by calling WSAGetLastError.
  Error code Meaning
  WSANOTINITIALISED A successful WSAStartup call must occur before using this function.
  WSAENETDOWN The network subsystem or the associated service provider has failed.
  WSAEAFNOSUPPORT The specified address family is not supported.
  WSAEINPROGRESS A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function.
  WSAEMFILE No more socket descriptors are available.
  WSAENOBUFS No buffer space is available. The socket cannot be created.
  WSAEPROTONOSUPPORT The specified protocol is not supported.
  WSAEPROTOTYPE The specified protocol is the wrong type for this socket.
  WSAESOCKTNOSUPPORT The specified socket type is not supported in this address family.
  Remarks
  The socket function causes a socket descriptor and any related resources to be allocated and bound to a specific transport-service provider. Windows Sockets will utilize the first available service provider that supports the requested combination of address family, socket type and protocol parameters. The socket that is created will have the overlapped attribute as a default. For Microsoft operating systems, the Microsoft-specific socket option, SO_OPENTYPE, defined in Mswsock.h can affect this default. See Microsoft-specific documentation for a detailed description of SO_OPENTYPE.
  Sockets without the overlapped attribute can be created by using WSASocket. All functions that allow overlapped operation (WSASend, WSARecv,WSASendTo, WSARecvFrom, and WSAIoctl) also support nonoverlapped usage on an overlapped socket if the values for parameters related to overlapped operation are NULL.
  When selecting a protocol and its supporting service provider this procedure will only choose a base protocol or a protocol chain, not a protocol layer by itself. Unchained protocol layers are not considered to have partial matches on type or af either. That is, they do not lead to an error code of WSAEAFNOSUPPORT or WSAEPROTONOSUPPORT if no suitable protocol is found.
  Important The manifest constant AF_UNSPEC continues to be defined in the header file but its use is strongly discouraged, as this can cause ambiguity in interpreting the value of the protocol parameter.
  Connection-oriented sockets such as SOCK_STREAM provide full-duplex connections, and must be in a connected state before any data can be sent or received on it. A connection to another socket is created with a connect call. Once connected, data can be transferred using send and recv calls. When a session has been completed, a closesocket must be performed.
  The communications protocols used to implement a reliable, connection-oriented socket ensure that data is not lost or duplicated. If data for which the peer protocol has buffer space cannot be successfully transmitted within a reasonable length of time, the connection is considered broken and subsequent calls will fail with the error code set to WSAETIMEDOUT.
  Connectionless, message-oriented sockets allow sending and receiving of datagrams to and from arbitrary peers using sendto and recvfrom. If such a socket is connected to a specific peer, datagrams can be sent to that peer using send and can be received only from this peer using recv.
  Support for sockets with type SOCK_RAW is not required, but service providers are encouraged to support raw sockets as practicable.
  Notes for IrDA Sockets
  The Af_irda.h header file must be explicitly included.
  Only SOCK_STREAM is supported; the SOCK_DGRAM type is not supported by IrDA.
  The protocol parameter is always set to 0 for IrDA.
  Note On Windows NT, raw socket support requires administrative privileges.
  Requirements
  Windows NT/2000/XP: Included in Windows NT 3.1 and later.
  Windows 95/98/Me: Included in Windows 95 and later.
  Header: Declared in Winsock2.h.
  Library: Use Ws2_32.lib.
  See Also
  Windows Sockets Programming Considerations Overview, Socket Functions, accept, bind, connect, getsockname, getsockopt, ioctlsocket, listen, recv, recvfrom, select, send, sendto, setsockopt, shutdown, WSASocket

Unix Socket - 什么是socket(套接字)

        套接字允许在相同或不同机器上的两个不同进程之间进行通信。更准确地说,它是一种使用标准Unix文件描述符与其他计算机通信的方法。在Unix中,每个I/O操作都是通过写入或读取文件描述符来完成的。文件描述符只是一个与打开的文件相关联的整数,它可以是一个网络连接、一个文本文件、一个终端或其他东西。

        对于程序员来说,套接字的外观和行为很像底层的文件描述符。这是因为read()和write()等命令使用套接字的方式与使用文件和管道的方式相同。

        socket最初是在2.1BSD中引入的,随后在4.2BSD中被细化为当前的形式。目前大多数UNIX系统版本都提供了套接字特性。

        在CS应用程序框架中使用Unix套接字。服务是一个根据客户端的请求执行某些功能的进程。大多数应用程序级协议,如FTP、SMTP和POP3,都利用套接字在客户机和服务器之间建立连接,然后进行数据交换。

        有四种类型的套接字可供用户使用。前两种是最常用的,后两种很少使用。

        假定进程只在相同类型的套接字之间通信,但没有限制阻止不同类型的套接字之间通信。

         流套接字 ——保证在网络环境中交付。如果您通过流套接字发送三个项目“A, B, C”,它们将以相同的顺序到达-“A, B, C”。这些套接字使用TCP(传输控制协议)进行数据传输。如果无法投递,发送者将收到一个错误指示符。数据记录没有任何边界。

         数据包套接字 ——不能保证在网络环境中交付。它们是无连接的,因为你不需要像在流套接字中那样有一个打开的连接——你建立一个带有目标信息的包并将它发送出去。它们使用UDP(用户数据包协议)。

         原始套接字 ——这些为用户提供对底层通信协议的访问,这些协议支持套接字抽象。这些套接字通常是面向数据包的,尽管它们的确切特征取决于协议提供的接口。原始套接字不是为一般用户设计的;它们主要是为那些有兴趣开发新通信协议或访问现有协议中一些更神秘的设施的人提供的。

         顺序包套接字 ——它们类似于流套接字,不同的是记录边界被保留。该接口仅作为网络系统(NS)套接字抽象的一部分提供,并且在大多数严肃的NS应用程序中非常重要。顺序包套接字允许用户对一个包或一组包操纵序列(SPP)或网络数据包协议数据报协议(IDP)的报头,通过编写一个标准头,连同任何要发送的数据,或者通过指定一个默认的报头使用所有即将输出的数据,并允许用户接收传入的数据包的报头。

socket编程基于什么协议

如果你的socket协议族是AF_INET,然后类型是SOCK_STREAM,那么是通过TCP协议进行通信的,
如果是SOCK_DGRAM,那么是UDP通信的,无论TCP还是UDP,都会带有IP 地址头。
如果是都在本机,有可能通过127.0.0.1这个回环地址进行通信,回环地址和你的网卡不是一个设备,可能你抓错了设备,所以抓不到包,你可以尝试抓一下loop back/本地回环,这样名字的那个设备。
如果你是AF_LOCAL/AF_UNIX,那么它是通过sock文件进行通信的,这个抓不到。

文章分享结束,socket接口协议和怎么获取socket的协议类型的答案你都知道了吗?欢迎再次光临本站哦!

socket接口协议(怎么获取socket的协议类型)

本文编辑:admin

更多文章:


应用程序菜单在哪(电脑的应用程序在哪里)

应用程序菜单在哪(电脑的应用程序在哪里)

大家好,关于应用程序菜单在哪很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于电脑的应用程序在哪里的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月15日 14:10

sumproduct函数计数方法(计数公式是什么)

sumproduct函数计数方法(计数公式是什么)

其实sumproduct函数计数方法的问题并不复杂,但是又很多的朋友都不太了解计数公式是什么,因此呢,今天小编就来为大家分享sumproduct函数计数方法的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月15日 11:50

linux系统的特性(Linux系统的主要特点是什么)

linux系统的特性(Linux系统的主要特点是什么)

大家好,关于linux系统的特性很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于Linux系统的主要特点是什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月15日 10:50

知名女星孙侨璐于跨年夜,心梗猝死,年仅25岁!一一一写给年轻人?1月2日演员孙侨潞离世,说好的来日方长转眼就是别离

知名女星孙侨璐于跨年夜,心梗猝死,年仅25岁!一一一写给年轻人?1月2日演员孙侨潞离世,说好的来日方长转眼就是别离

其实演员孙侨潞的问题并不复杂,但是又很多的朋友都不太了解知名女星孙侨璐于跨年夜,心梗猝死,年仅25岁!一一一写给年轻人,因此呢,今天小编就来为大家分享演员孙侨潞的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月15日 10:40

mariadb忘记密码(mysql用户密码忘记了怎么办)

mariadb忘记密码(mysql用户密码忘记了怎么办)

大家好,mariadb忘记密码相信很多的网友都不是很明白,包括mysql用户密码忘记了怎么办也是一样,不过没有关系,接下来就来为大家分享关于mariadb忘记密码和mysql用户密码忘记了怎么办的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月15日 07:50

mysql端口号(如何查看自己数据库的端口号)

mysql端口号(如何查看自己数据库的端口号)

“mysql端口号”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看mysql端口号(如何查看自己数据库的端口号)!

2026年10月15日 06:30

printf打印16进制(C语言 十六进制怎么输出)

printf打印16进制(C语言 十六进制怎么输出)

大家好,今天小编来为大家解答以下的问题,关于printf打印16进制,C语言 十六进制怎么输出这个很多人还不知道,现在让我们一起来看看吧!

2026年10月15日 06:00

avantage怎么设置为中文(Avantage安装丢失GIT)

avantage怎么设置为中文(Avantage安装丢失GIT)

大家好,如果您还对avantage怎么设置为中文不太了解,没有关系,今天就由本站为大家分享avantage怎么设置为中文的知识,包括Avantage安装丢失GIT的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月15日 03:00

ospf协议的作用是什么(OSPF路由协议的作用是什么)

ospf协议的作用是什么(OSPF路由协议的作用是什么)

“ospf协议的作用是什么”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看ospf协议的作用是什么(OSPF路由协议的作用是什么)!

2026年10月15日 02:40

方案对比特效js(在一个网页中如何实现两个JS特效)

方案对比特效js(在一个网页中如何实现两个JS特效)

各位老铁们好,相信很多人对方案对比特效js都不是特别的了解,因此呢,今天就来为大家分享下关于方案对比特效js以及在一个网页中如何实现两个JS特效的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月15日 02:10

最近更新

热门文章

标签列表