socket相关知识
-
python socket    套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。 套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。 网络套接字是IP地址与端口的组合。 socket相当于一个接口使得我们可以脱离应用层直接和传输层(以及其下的协议层)对接 1. socket流程 I. 服务端  创建socket对象 -> 绑定协议、端口等 -> 监听请求(等待客户端连接) -> 建立客户端连接 -> 关闭连接
-
python socket编程Python 提供了两个基本的 socket 模块。第一个是 Socket,它提供了标准的 BSD Sockets API。第二个是 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。socket类型套接字格式:socket(family,type[,protocal]) 使用给定的地址族、套接字类型、协议编号(默认为0,一般不写)来创建套接字。地址族:socket类型描述socket.AF_UNIX单一个unix进程间通信socket.AF_INET服务器之间的通信scoket.AF_INET6IPV6使用套接字类型:socket类型描述socket.SOCK_STREAM流式 for TCPsocket.SOCK_DGRAM报文式数据包 for UDPscoket.SOCK_RAW原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL
-
unix domain socket 浅析unix domain socket unix domain socket 是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC: Inter-Process Communication),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。UNIX Domain Socket有SOCK_DGRAM或SOCK_STREAM两种工作模式,类似于UDP和TCP,但是面向消息的UNIX Domain Socket也是可靠的,消息既不会丢失也不会顺序错乱。 UNIX Domain Socket可用于两个没有亲缘关系的进程,是全双
-
一篇搞懂TCP、HTTP、Socket、Socket连接池前言:作为一名开发人员我们经常会听到HTTP协议、TCP/IP协议、UDP协议、Socket、Socket长连接、Socket连接池等字眼,然而它们之间的关系、区别及原理并不是所有人都能理解清楚,这篇文章就从网络协议基础开始到Socket连接池,一步一步解释他们之间的关系。 七层网络模型 首先从网络通信的分层模型讲起:七层模型,亦称OSI(Open System Interconnection)模型。自下往上分为:物理层、据链路层、网络层、传输层、会话层、表示层和应用层。所有有关通信的都离不开它,下面这张图片介绍了各层所
socket相关课程
socket相关教程
- SOCKET 协议 Socket 是传输层协议的具体软件实现,它封装了协议底层的复杂实现方法,为开发人员提供了便利的网络连接。Socket 是网络编程的基石,像 Http 的请求,MySQL 数据库的连接等绝大部分的网络连接都是基于 Socket 实现的。
- 3.2 Ruby中Socket类 Ruby 中拥有非常丰富的 Socket 的类型。上面是一张出自《Programming Ruby》的图片,介绍了 Rub y中 Socket 的类型。如上图所示,所有的类都继承了 IO 类。下面的例子中我们会使用TCPSocket来进行 Socket 的连接,使用TCPServer来创建一个TCP的服务器。Tips:所有的Socket类都是标准库的一部分(不是核心类的一部分),因此要使用require 'socket'才可以在程序中使用它。下面的是服务端的代码:实例:require 'socket'server = TCPServer.new('127.0.0.1', 18000)loop do Thread.start(server.accept) do |s| puts "#{s} is accepted." s.write(Time.now) puts "#{s} is gone." s.close endend解释:我们使用TCPServer在本地创建了一个TCP的Socket服务器server,Thread.start创建了一个新的线程(线程详细会在多线程章节中解释)并执行块中的代码指令。server.accept方法等待server上的链接,并返回链接到调用者的新TCPSocket对象s。loop do会一直迭代,直到退出循环。s.write会将时间写入到Socket之中。s.close会关闭socket。这个脚本需要先启动,刚启动时你不会看到任何输出内容。下面是客户端的代码:实例:require 'socket' stream = TCPSocket.new('127.0.0.1', 18000)string = stream.recv( 100 ) puts string stream.close 解释:我们使用TCPSocket.new('127.0.0.1', 18000)打开了TCP连接。语句string = stream.recv( 100 )定义我们从socket最多接收100个字节。然后打印从服务器端获取到的时间,最后关闭socket。服务端输出内容:#<TCPSocket:0x00007fb54497d898> is accepted.#<TCPSocket:0x00007fb54497d898> is gone.客户端输出内容:2020-08-24 00:23:14 +0800这是一个服务端发送,客户端接收的例子。反过来依旧可以。下面是服务端的代码:require 'socket'server = TCPServer.new('127.0.0.1', 18000)loop do Thread.start(server.accept) do |s| puts "#{s} is accepted." string = s.recv( 100 ) puts string puts "#{s} is gone." s.close endend下面是客户端的代码:require 'socket' stream = TCPSocket.new('127.0.0.1', 18000)stream.write(Time.now)服务端输出结果:#<TCPSocket:0x00007fd6d714d1f0> is accepted.2020-08-24 00:29:15 +0800#<TCPSocket:0x00007fd6d714d1f0> is gone.客户端输出结果:# 无内容
- 3.1 什么是 Socket Socket 表示两个网络应用程序之间的单个连接。这两个应用程序名义上可以在不同的计算机上运行,并且Socket也可以在单台计算机上实现进程之间的通信。应用程序可以创建多个用于相互通信的Socket。Socket 是双向的,代表连接它的任何一方都可以发送和接收数据。
- 3. 通用 Socket 选项 通用 Socket 选项的 level 枚举值是 SOL_SOCKET。表格中选项名称不用多说,数据类型列表示选项值的类型,大多数是整形,还有一些是结构体类型。有的选项是既可以设置值也可以读取值,用 set 表示;有的选项只能读取值,用 get 表示。常见选项参数如下:选项名称数据类型get 或 set说明SO_BROADCASTintset设置 Socket 可以进行局域网广播,目标 IP 需要填网段的广播地址或者是统一受限广播地址 255.255.255.255。SO_KEEPALIVEintset用于设置 TCP 连接的保活,一般很少用。SO_LINGERstruct lingerset用于设置当 TCP 连接已经关闭,但是未发送数据等待时间。通常设置 SO_LINGER 等待时间为 0,解决大量 TIME_WAIT 状态的问题。SO_OOBINLINEintset用于设置将“带外数据”作为普通数据流来处理。SO_RCVBUFintset设置 Socket 接收缓冲区大小。SO_REUSEADDRintset用于设置在调用 bind() 函数时,重用已经 bind 的 Socket 地址。SO_SNDBUFintset设置 Socket 发送缓冲区大小。
- 2. Socket 的基础概念 Socket 翻译成中文是“套接字”,它是应用层和传输层中间的一个抽象中间件,它封装了底层的 TCP / IP 协议族,并向上暴露 API 给应用层,从而向上屏蔽底层协议细节。 所以 Socket 可以作为底层网络门面来让我们不在拘泥于复杂的底层传输协议,而将更多的重心放在自己的功能开发上。 下图是 Socket 的一个整体工作原理:每个 Socket 对象都对应着一个 IP 地址和一个端口号,用来标识互联网上的唯一目的地址,然后就可以通过 TCP 或者 UDP 将数据发送给对方。
- 2. Socket 选项的概念 操作系统协议栈支持的 Socket 选项参数有很多,汇总起来如下图所示:从图中可以看出,Socket 选项按照级别进行分类,级别有很多种,但是总结起来分两类:通用 Socket 级别的选项。枚举值为 SOL_SOCKET。协议相关的选项。协议栈为我们提供了控制所有协议的选项,比如 IP、IPv6、TCP、UDP、ICMP 等。枚举值的格式为 IPPROTO_XXX,XXX 代表协议。每一种选项级别下面包含了很多选项参数。比如,通用 Socket 选项的级别枚举值是 SOL_SOCKET,其下面包含 SO_RCVBUF 和 SO_SNDBUF 选项参数;IP 协议选项的级别的枚举值是 IPPROTO_IP,其下面包含 IP_TTL、IP_TOS 等选项参数。在 Linux 系统下,所有的选项参数都可以在帮助手册里面查找,具体方法如下:通用 Socket 级别选项参数man 7 socketIP 协议级别选项参数:man 7 ipIPv6 协议级别选项参数:man 7 ipv6TCP 协议级别选项参数:man 7 tcpUDP 协议级别选项参数:man 7 udpSocket 选项参数最终是如何设置到协议栈的呢?协议栈提供了 getsockopt() 和 setsockopt() 两个 C 语言函数,分别用于获取和设置选项参数。调用两个函数所需要包含的头文件,以及他们的声明如下:#include <sys/types.h> #include <sys/socket.h>int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);如果你对系统本身的 Socket 选项感兴趣,可以通过 man 查找相关帮助。本节重点介绍通用 Socket 选项。
socket相关搜索
-
s line
safari浏览器
samba
SAMP
samplerate
sandbox
sanitize
saper
sas
sass
save
smarty模板
smil
smtp
snapshot
snd
snmptrap
soap
soapclient
soap协议