首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

网络协议之:socket协议详解之Socket和Stream Socket

简介 不管是普通网络编程中还是netty中,都经常会提到一个词叫做socket,好像socket是一个神奇东西,使用socket我们可以建立客户端到服务器端连接,并且和进行客户端和服务器端通讯...Socket是什么 socket中文翻译是套接,个人觉这个翻译真的是太差劲了,套接听起来毫无意义,所以很多人在第一次听到socket这个词时候肯定很迷茫。 那么什么是socket呢?...socket是一种不同程序间进行进程通讯方法,这些程序可以同一个服务器上也可以不同服务器上。...通过network socket可以建立客户端和服务器端连接,客户端和服务器端是通过socket address来发现对方。...接下来我们会在一个unix系统中详细讲解这几种协议使用。 讲解详细例子之前,我们需要使用到关于网络命令,他们是ss,nc和socat

1.8K21

windows socket编程c语言_网络编程socket

另外 ,数据报套接支持广播发送 ,使用 setsockopt() 函数可以使指定套接发送广播消息。相比之下 ,流式套接不支持广播发送。...我们可以一个工作线程中处理数据接收和发送 ,该工作线程可以在后台运行 ,套接工作线程中阻塞不会影响主线程中其它活动 ,这样主线程可以处理主窗口消息映射。...异步方式中 ,调用会立即返回 ,用 GetLastError 函数会获相应错误代码 WSAEWOULDBLOCK,表示无连接可以 受。...例如服务器一般可以接受多个连接 ,它每接受一个连接 ,就创建一个线程用来处理连接。达到这个目的 ,仅仅在这两个线程个传递套接对象是不够。...虽然两个线程之间不能传递套接对象 ,但我们可以在线程之间传递线程句柄。因此我们可以按以下步骤进行 : (1) 把附加在接受连接线程套接对象上套接字句柄分离出来。

6.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

Socket原理

本地进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名和具名) 远程过程调用(...使用TCP/IP协议应用程序通常采用应用编程接口:UNIX BSD套接(socket)和UNIX System VTLI(已经被淘汰),来实现网络进程之间通信。...常用协议族有,AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIXUnixsocket)、AF_ROUTE等等。...它接收也作为文件结束符传递给应用进程,因为FIN接收意味着应用进程相应连接上再也接收不到额外数据; 一段时间之后,接收到文件结束符应用进程调用close关闭它socket。...,若是SOCK_DGRAM,则用是udp不可靠传输 //配合type参数使用,指定使用协议类型(当指定套接类型后,可以设置0,因为默认为UDP或TCP) if(sListen == INVALID_SOCKET

47020

socket通讯原理及例程(一看就懂)

本地进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名和具名) 远程过程调用...使用TCP/IP协议应用程序通常采用应用编程接口:UNIX BSD套接(socket)和UNIX System VTLI(已经被淘汰),来实现网络进程之间通信。...常用协议族有,AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIXUnixsocket)、AF_ROUTE等等。...它接收也作为文件结束符传递给应用进程,因为FIN接收意味着应用进程相应连接上再也接收不到额外数据; 一段时间之后,接收到文件结束符应用进程调用close关闭它socket。...,若是SOCK_DGRAM,则用是udp不可靠传输 //配合type参数使用,指定使用协议类型(当指定套接类型后,可以设置0,因为默认为UDP或TCP) if(sListen == INVALID_SOCKET

1.2K30

Socket通信原理

本地进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名和具名)...使用TCP/IP协议应用程序通常采用应用编程接口:UNIX BSD套接(socket)和UNIX System VTLI(已经被淘汰),来实现网络进程之间通信。...常用协议族有,AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIXUnixsocket)、AF_ROUTE等等。...socket描述,第二个参数相应socket可以排队最大连接个数。...它接收也作为文件结束符传递给应用进程,因为FIN接收意味着应用进程相应连接上再也接收不到额外数据; 一段时间之后,接收到文件结束符应用进程调用close关闭它socket。

82610

一切皆Socket

socket()函数介绍 函数原型 socket()函数原型如下,这个函数建立一个协议族domain、协议类型type、协议编号为protocol套接文件描述符。...类型SOCK_STREAM套接字表示一个双向字节流,与管道类似。流式套接进行数据收发之前必须已经连接,连接使用connect()函数进行。...本地进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名和具名)...它接收也作为文件结束符传递给应用进程,因为FIN接收意味着应用进程相应连接上再也接收不到额外数据; 一段时间之后,接收到文件结束符应用进程调用close关闭它socket。...下面编写一个简单服务器、客户端(使用TCP)——服务器端一直监听本机6666号端口,如果收到连接请求,将接收请求并接收客户端发来消息;客户端与服务器端建立连接并发送一条消息

56210

Python进阶之网络编程

soc.close() udp udp使用socket发送数据 同一局网内发消息; 如果用虚拟机和windows,要用桥模式,确保同一局网内; import socket def main...== "__main__": main() tcp服务器 监听套接,专门用来监听; accept会对应新创建套接,当监听套接收到一个请求后,将该请求分配给新套接,由此监听套接可以继续去监听了...绑定本地信息 让默认套接由主动变为被动 等待客户端链接,堵塞 被客户端链接后,创建一个新客服套接客户端服务; 接收客户端发送消息,堵塞 接收客户端发送消息后,给客户端回消息 关闭客服套接...当一个tcp客户端连接服务器时,服务器端会有1个新套接,这个套接用来标记这个客户端,单独这个客户端服务。...9.当客户端套接字调用close后.服务器端会recv解堵塞,并且返回长度0,因此服务器可以通过 返回数据长度来区别客户端是否已经下线。

81520

通信原理一个月能学会_通信原理第六版

本地进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名和具名) 远程过程调用...使用TCP/IP协议应用程序通常采用应用编程接口:UNIX BSD套接(socket)和UNIX System VTLI(已经被淘汰),来实现网络进程之间通信。...创建socket时候,也可以指定不同参数创建不同socket描述符,socket函数三个参数分别为: domain:即协议,又称为协议族(family)。...常用协议族有,AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIXUnixsocket)、AF_ROUTE等等。...它接收也作为文件结束符传递给应用进程,因为FIN接收意味着应用进程相应连接上再也接收不到额外数据; 一段时间之后,接收到文件结束符应用进程调用close关闭它socket。

27080

从Memcachedsocket了解TCP参数

Memcached一共用到了3种套接(即: TCP, UDP和NUIX) UNIX Domain Socket 与 TCP/IP Socket 对比 socket API原本是网络通讯设计...UNIX套接与TCP套接相比较,同一台主机传输速度前者是后者两倍。 这是因为,IPC机制本质上是可靠通讯,而网络协议是不可靠通讯设计。...SO_LINGER 讲这个选项之前,可以先了解下shutdown和close这两个函数区别. 1、close函数主要是把描述符引用计数减一,仅在该计数变为0时,才关闭这个套接.当调用close(...,也可以全关闭,取决howto SHUT_RD 关闭连接读这一半--套接不再有数据可以接收,而且该套接中现有的数据都被丢弃.进程不能对该套接字调用任何读函数....SHUT_WR 关闭连接写一半--对于TCP套接,这称为半关闭.当前留在套接发送缓冲区中数据将被发送掉,后跟TCP正常终止序列.不管套接引用计数是否0,写半部照样关闭.进程不能对套接字调用任何写函数

45420

LinuxSOCKET编程详解

许多操作系统中,套接描述符和其他I/O描述符是集成在一起,所以应用程序可以对文件进行套接I/O或I/O读/写操作。...套接设计总体思路是,单个系统调用就可以创建任何套接,因为套接是相当笼统。一旦套接创建后,应用程序还需要调用其他函数来指定具体细节。...此时我们需要区分两种套接, 监听套接: 监听套接正如accept参数sockfd,它是监听套接调用listen函数之后,是服务器开始调用socket()函数生成,称为监听socket...Socket编程实例 服务器端:一直监听本机8000号端口,如果收到连接请求,将接收请求并接收客户端发来消息,并向客户端返回消息。.../client 127.0.0.1 等待输入消息 发送一条消息,输入:c++ 此时服务器端看到: 客户端收到消息: 其实可以不用client,可以使用telnet来测试: telnet 127.0.0.1

8.2K10

线程通信(ITC)

欲与服务器通信客户则创建一个客户套接,然后向服务器套接发送连接请求。服务器套接收到连接请求后,将在服务器机器上创建一个客户套接,与远方客户机上客户套接字形成点到点通信通道。...之后,客户端和服务器端可以通过send和recv命令在这个创建套接通道上进行交流了。 服务器套接有点类似于传说中虫洞(worm hole)。...例如按照传输媒介是否本地,套接可以分为本地(UNIX)套接和网套接。...消息队列 消息队列是一列具有头和尾消息排列,新来消息放在队列尾部,而读取消息则从队列头部开始。 乍一看,这不是管道?一头儿读、一头儿写?没错。这的确看上去像管道。但它不是管道。...最后,它并不是只UNIX和类UNIX操作系统实现。几乎所有主流操作系统都支持消息队列。

67620

vppinfra---socket api

通过recvmsg()函数返回接收消息标志中MSG_EOR标志,接收方可以看到记录边界。是否施加最大记录大小取决于协议。...2、CLIB_SOCKET_F_PASSCRED 用于设置unix套接SO_PASSCRED属性。 下面man手册给解释,看来这个字段置位时,会存储uid,gid,pid信息。...此字段置位后,通信应该是recvmsg、secnmsg接口函数。 SO_PASSCRED启用此套接选项将导致随后接收到每个消息SCM_CREDENTIALS辅助消息中接收到发送进程凭据。...当设置了这个选项并且套接还没有连接时,抽象命名空间中唯一名称将自动生成。 3、收发报文函数指针。用户可以自己设定,如果不指定默认使用缺省函数。.../run/vpp/cli.sock #unix套接

66310

Linux进程间通信方式之socket使用实例

套接是一种通信机制,凭借这种机制,客户/服务器系统开发工作既可以本地单机上进行,也可以跨网络进行。...地址格式随(又被称为协议族,protocol family)不同而不同。每个协议族又可以使用一个或多个地址族定义地址格式。 1.套接 指定套接通信中使用网络介质。...2.套接类型 流套接某些方面类似标准输入/输出流)提供是一个有序,可靠,双向字节流连接。...对于本地套接来说,流式套接(SOCK_STREAM)是一个有顺序、可靠双向字节流,相当于本地进程之间建立起一条数据通道;数据报式套接(SOCK_DGRAM)相当于单纯发送消息进程通信过程中... TCP/IP 协议中,IP 地址首字节 127 即代表本地,因此本地套接通信可以使用 IP 地址 127.x.x.x 网络套接来实现。

5.1K61

【网络编程系列】二:socket通信原理及实践

本地进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名和具名)...使用TCP/IP协议应用程序通常采用应用编程接口:UNIX  BSD套接(socket)和UNIX System VTLI(已经被淘汰),来实现网络进程之间通信。...socket描述,第二个参数相应socket可以排队最大连接个数。...它接收也作为文件结束符传递给应用进程,因为FIN接收意味着应用进程相应连接上再也接收不到额外数据; 一段时间之后,接收到文件结束符应用进程调用close关闭它socket。...参数使用,指定使用协议类型(当指定套接类型后,可以设置0,因为默认为UDP或TCP) if(sListen == INVALID_SOCKET) { printf

1.2K60

netstat命令

Local Address: 套接本地端地址和端口号,除非指定了--numeric, -n选项,否则套接地址将解析其规范主机名FQDN,并且端口号将转换为相应服务名。...State: socket状态,由于原始套接raw模式中没有状态,而且UDP中通常没有使用状态,因此这一列可以留空,通常这可以是以下值之一,TCP握手与挥手过程中通常会经历这些状态。...UNIX套接 有关活动UNIX套接信息属于以下类别: Proto: 套接使用协议,通常是unix。 RefCnt: 引用计数,即通过此套接连接进程。...SOCK_RDM: 这个服务提供可靠消息传递。 SOCK_SEQPACKET: 这是一个顺序数据包套接。 SOCK_PACKET: 原始接口访问套接。.../proc/net/unix: Unix套接信息。 /proc/net/ipx: IPX套接信息。 /proc/net/ax25: AX25套接信息。

1.2K10

socket原理讲解_电感器作用及原理

许多操作系统中,套接描述符和其他I/O描述符是集成在一起,所以应用程序可以对文件进行套接I/O或I/O读/写操作。...套接设计总体思路是,单个系统调用就可以创建任何套接,因为套接是相当笼统。一旦套接创建后,应用程序还需要调用其他函数来指定具体细节。...应用程序创建套接字后套接可以使用之前,必须调用其他过程来填充这些字段。 3、文件描述符和文件指针区别: 文件描述符:linux系统中打开文件就会获得文件描述符,它是个很小正整数。...此时我们需要区分两种套接, 监听套接: 监听套接正如accept参数sockfd,它是监听套接调用listen函数之后,是服务器开始调用socket()函数生成,称为监听socket...它接收也作为文件结束符传递给应用进程,因为FIN接收意味着应用进程相应连接上再也接收不到额外数据; 一段时间之后,接收到文件结束符应用进程调用close关闭它socket。

30410

mac下开启docker API远程调用

通过以上实验,我们可以知道,验证文章开头那个猜想是正确,Mac OS下docker是通过Linux虚拟机方式运行。...unix提供两类套接:字节流套接(类似TCP)和数据报套接(类似UDP)。使用unix协议有如下优势: (1)unix套接往往比通信两端位于同一个主机TCP套接快出一倍。...(2)unix套接可用于同一个主机上不同进程之间传递描述符。 (3)unix套接较新实现把客户凭证(用户ID和组ID)提供给服务器,从而能够提供额外安全检查措施。...我们要实现目标就是将tcp转化为unix协议,这里有一个号称网络界瑞士军刀socat可以实现我们想法。...对Mac docker原理展开做了一个说明,同时对unix协议通过go语言实现了一个demo,最后通过socat这个强大网络工具通过docker安装方式解决了docker API访问问题。

6.3K42

进程通信原理

上海某一块网卡送出信号,洛杉矶另一块网卡居然就收到了,两者实际上根本不知道对方物理位置,你不觉得这是很神奇事情?...,除了用于进程间通信外,进程还可以发送信号给进程本身; linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准信号函数sigaction(实际上,该函数是基于BSD...消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。有足够权限进程可以向队列中添加消息,被赋予读权限进程则可以读走队列中消息。...更为一般进程间通信机制,可用于不同机器之间进程间通信。起初是由Unix系统BSD分支开发出来,但现在一般可以移植到其它类Unix系统上:Linux和System V变种都支持套接。...信号量:不能传递复杂消息,只能用来同步 共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程时候,另一个进程要注意读写问题,相当于线程中线程安全,当然,共享内存区同样可以用作线程间通讯

1.3K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券