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

Linux进程通信之Unix套接(二)

Unix套接通信之Udp tcp和udp的区别 Tcp是可靠、稳定的,需要经过三次握手来建立连接,收发消息经过确认、Udp是不可靠的、不需要建立连接 Tcp需要建立连接确认,速度要比Udp不需要经过连接的慢一点...= socket_create(AF_UNIX,SOCK_DGRAM,0); //bind 到文件 socket_bind($socket,$file); while (1) { //从套接接收数据...} if(strncasecmp($data,'quit',4) == 0) { exit(0); } } } //父进程发送...s\n",$pid); 执行服务端代码php demo29.php,通过ls命令可以看到已经生成文件,并且通过file命令可以看到生成的文件是一个socket文件,通过pstree -ap 查看启动的进程...id,通过strace命令监控服务端进程 通过上面的执行结果可以看到,进程之间是可以进行通信的 注意:切记要自行处理生成的socket文件,否则会报address呗占用的错误 本文为北溟有鱼QAQ

1.8K20

Linux进程通信之Unix套接(一)

Linux进程通信之Unix套接(一) 什么是套接 所谓套接(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。...一个套接就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。...) AF_INET6(IPV6) AF_UNIX(本地通讯协议,一般用于进程通信,不需要经过网卡) 套接类型 流套接(SOCK_STREAM),提供一个顺序化的、可靠的、全双工的、基于连接的字节流。...TCP 协议即基于这种流式套接。 数据报套接(SOCK_DGRAM)即提供数据报文的支持。(无连接,不可靠、固定最大长度).UDP协议即基于这种数据报文套接。...PHP中封装了以socket开头和stream开头的两种函数,都可以实现Unix套接通信,具体可以查看PHP官方手册 Unix套接还分无命名的(用于父子、兄弟等有血缘关系进程通信)和命名的(任何进程都可以通信

2.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    1.12 进程注入ShellCode套接

    读者需要理解,套接(socket)是计算机网络中一种特殊的文件,是网络通信中的一种技术,用于实现进程之间的通信和网络中数据的传输。在网络通信中,套接就像一条传送数据的管道,负责数据的传输和接收。...将CMD绑定到套接上通常涉及以下步骤:创建一个监听套接,以便在客户端连接之前等待连接。监听套接可以是TCP或UDP类型。调用bind()函数将监听套接绑定到本地IP地址和端口上。...调用listen()函数将监听套接转换为被动套接,并设置等待连接的队列的最大长度。调用accept()函数来接受客户端连接,这将创建一个新的套接,它与客户端套接相关联。...调用CreateProcess()函数启动cmd.exe进程,并将标准输入、输出和错误流重定向到新创建的套接上。...这些函数与动态链接库、套接通信、网络编程、创建进程等有关。

    32340

    1.12 进程注入ShellCode套接

    读者需要理解,套接(socket)是计算机网络中一种特殊的文件,是网络通信中的一种技术,用于实现进程之间的通信和网络中数据的传输。在网络通信中,套接就像一条传送数据的管道,负责数据的传输和接收。...将CMD绑定到套接上通常涉及以下步骤: 创建一个监听套接,以便在客户端连接之前等待连接。监听套接可以是TCP或UDP类型。 调用bind()函数将监听套接绑定到本地IP地址和端口上。...调用listen()函数将监听套接转换为被动套接,并设置等待连接的队列的最大长度。 调用accept()函数来接受客户端连接,这将创建一个新的套接,它与客户端套接相关联。...调用CreateProcess()函数启动cmd.exe进程,并将标准输入、输出和错误流重定向到新创建的套接上。...这些函数与动态链接库、套接通信、网络编程、创建进程等有关。

    24740

    Linux网络套接(二)

    学习任务: 继网络套接(一),继续学习套接socket编程接口(已经学习了socket和bind),实现TCP客户端/服务器(单连接版本, 多进程版本, 多线程版本,进程或线程池版本),并且理解...首先是写出服务器的代码,代码的思路是这样的: ①首先为服务器创建套接,因为这个是TCP协议,TCP是面向连接的,因此服务器是需要进入监听状态才能让客户端连接,所以使用socket接口创建出来的套接是属于监听套接...③设置监听状态,监听状态的服务器,通俗地来解释就是服务器进入监听状态,就是告诉客户端我可以被连接了,来吧! ④使用accept接口,创建出提供服务的套接。...代码思路:让父进程创建子进程,子进程去执行网络通信,执行完后就把fd关掉。同时,进入到父进程,表示了子进程已经拿到了用于通信的套接,那么父进程就可以它关闭掉。...//因为这个用于通信的套接已经被子进程拿过去了,因此这个套接对父进程来说没有用了 //可以把它关掉 close(new_sock); } } return 0

    1.9K30

    Unix套接进程通信初探【Go版本】

    与网络套接不同,Unix套接不使用网络协议栈,因此性能更高。它们主要用于需要高效、低延迟的本地进程通信场景。...Unix套接的工作流程 服务器端操作流程: 创建套接:使用系统调用创建一个套接文件描述符。 绑定套接:将套接绑定到一个文件系统路径,类似于网络套接绑定到IP地址和端口。...监听连接:使套接进入监听状态,准备接受客户端连接。 接受连接:当有客户端请求连接时,接受连接并创建一个新的套接文件描述符用于通信。 通信:通过读写操作在服务器和客户端之间传输数据。...关闭套接:完成通信后,关闭套接并清理资源。 客户端操作流程: 创建套接:使用系统调用创建一个套接文件描述符。 连接到服务器:使用系统调用连接到服务器端的套接路径。...通信:通过读写操作在客户端和服务器之间传输数据。 关闭套接:完成通信后,关闭套接并清理资源。 优点和应用场景 优点: 高效:由于不涉及网络协议栈的处理,Unix套接具有更低的开销和更高的性能。

    24110

    Linux网络-套接编程基础

    Linux网络编程套接 零、前言 一、网络基础知识 1、源IP地址和目的IP地址 2、源MAC地址和目的MAC地址 3、认识端口号 4、PORT VS PID 5、TCP和UDP协议 6、网络字节序...二、socket编程接口 1、sockaddr结构 2、socket 常见API 零、前言 本章就Linux网络编程进行概念及接口学习,下一篇则是简单的进行上手网络套接编程 一、网络基础知识 1...,存在一个进程占有多个端口号,但是一个端口号不能被多个进程占有 4、PORT VS PID 进程ID(PID)是用来标识系统内所有进程的唯一性的,它是属于系统级的概念 端口号(port)是网络数据传输中标识主机中进程的唯一性的...位的长整数从主机字节序转换为网络字节序 如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回;如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回 二、socket编程接口 1、sockaddr结构 套接不仅支持跨网络的进程间通信...,还支持本地的进程间通信(域间套接) 因此套接提供了sockaddr_in结构体和sockaddr_un结构体,其中sockaddr_in结构体是用于跨网络通信的,而sockaddr_un结构体是用于本地通信的

    1.4K20

    linux netlink套接学习资料

    SOCK_RAW, NETLINK_TEST); if (sock_fd < 0) { eprint(errno, "socket", __LINE__); return errno; } //将本地套接与源地址绑定...sockaddr *)&src_addr, sizeof(src_addr)) < 0) { eprint(errno, "bind", __LINE__); return errno; } //绑定了套接之后...用户进程终于发送的是msghdr结构的消息,因此必须对这个结构进行初始化, //而msghdr结构又与 //初始化msghdr结构 sockaddr_nl。iovec和nlmsghdr三个结构相关。...struct iovec iov;iov.iov_base = (void *)&r;iov.iov_len = sizeof(r);//一切就绪后,将目的套接地址与当前要发送的消息msg绑定,即将目的套接地址复制给...再将要发送的数据iov与msg_iov绑定,假设一次///性要发送多个数据包,则创建一个iovec类型的数组。

    1.1K10

    Linux网络-TCPUDP套接编程

    零、前言 本章主要是对套接网络编程的一个学习,目标是能够基本的进行套接编程 一、UDP套接 1、创建套接 无论是服务端还是客户端,进行网络编程需要做的第一件事就是创建套接 socket...相比于UDP套接来说,TCP套接与之在一些地方是相同的,但是TCP的特点是面向链接的流式套接,所以还是有很大的区别的 1、创建套接 同样的tcp的服务端和客户端首先第一件事是创建套接文件...ip同时转成网络传输格式 //客户端并不用进行绑定自己的端口-发送数据时会自动进行绑定 3、监听-接收/链接 由于TCP是面向链接的套接,所以需要服务端和客户端建立链接关系 对于服务端来说,服务端是会被多个客户端进行链接...,即服务器时刻注意是否有客户端发来连接请求 sockfd:需要设置为监听状态的套接对应的文件描述符 backlog:全连接队列的最大长度。...如果有多个客户端同时发来连接请求,此时未被服务器处理的连接就会放入连接队列,该参数代表的就是这个全连接队列的最大长度,一般不要设置太大,设置为5或10即可 返回值:监听成功返回0,监听失败返回-1,同时错误码会被设置

    3.7K10

    Linux】网络基础+UDP网络套接编程

    二、 UDP网络套接编程 1.网络通信的本质(port标识的进程间通信) 1. 只要有目的ip地址和源IP地址就能够完成客户端和服务器的通信了吗?...进程不仅仅在双链表当中,他还有可能在红黑树,哈希表等数据结构当中,内核中多个数据结构会缠绕在一起,非常的复杂。 5. 一个进程可以绑定多个端口号,但一个端口号不能被多个进程绑定。...套接编程中,常见的有网络套接编程,原始套接编程,unix域间套接编程。 网络套接支持多主机跨网络通信,下面讲到的都是这个套接编程。...原始套接比较难,它可以绕过传输层直接访问网络层以及下面的层,抓包和网络监测工具就是通过原始套接来完成的,文章不谈论原始套接和unix域间套接,只谈论网络套接编程。...初始化服务器的第一步就是创建服务器套接,通过套接文件描述符能够帮助我们实现UDP的全双工通信。

    37410

    Linux内核编程--网络协议与套接编程

    套接与地址关联--bind() bind()操作把一个本地协议地址和一个套接进行了绑定,为了方便客户端根据地址找到服务器的位置。...在进程正在运行的计算机上,指定的地址必须有效,不能指定其他机器的地址。 地址必须和创建套接时的地址族所支持的格式相匹配。 地址中的端口号必须不小于1024,除非进程具有超级用户的特权。...建立连接--connect() 如果要处理一个面向连接的网络服务(SOCK_STREAM或SOCK_SEQPACKET),在交换数据前,需要在客户端进程套接和服务端进程套接之间建立一个连接。...当服务器处理完客户端的请求时,该套接会被关闭。...: 客户端显示: *如果涉及到一个服务器处理来自多个客户端发来的请求,可以用fork创建一些子进程来处理客户端请求,在"pid == 0"的条件下完成处理。

    2.1K20

    多个套接可以绑定同一个端口吗

    、端口组合只能被一个套接绑定,Linux 内核从 3.9 版本开始引入一个新的 socket 选项 SO_REUSEPORT,又称为 port sharding,允许多个套接监听同一个IP 和端口组合...主进程执行 bind()、listen() 初始化套接,然后 fork 新的子进程。在这些子进程中,通过 accept/epoll_wait 同一个套接来进行请求处理,示意图如下所示。...计算机中的惊群问题指的是:多进程/多线程同时监听同一个套接,当有网络事件发生时,所有等待的进程/线程同时被唤醒,但是只有其中一个进程/线程可以处理该网络事件,其它的进程/线程获取失败重新进入休眠。...accept 惊群 Linux 在早期的版本中,多个进程 accept 同一个套接会出现惊群问题,以下面的代码为例。 int main(void) { // ......这是因为 Linux 在 2.6 内核版本之前监听同一个 socket 的多个进程在事件发生时会唤醒所有等待的进程,在 2.6 版本中引入了 WQ_FLAG_EXCLUSIVE 选项解决了 accept

    2.8K21

    【网络】TCP套接创建服务客户端与守护进程

    Tcp服务端 TcpServer.hpp TCP服务端创建流程如下: 创建socket文件套接对象,面向字节流SOCK_STREAM bind绑定自己的网络信息,通常端口是固定的,IP地址默认为...创建socket文件套接对象 _listensock = socket(AF_INET, SOCK_STREAM, 0); if (_listensock...); tsvr->initServer(); tsvr->start(); return 0; } Tcp客户端 TcpClient.hpp Tcp客户端创建流程如下: 创建套接...守护进程服务器要做到一点:服务器启动之后,不在受到用户的登录退出影响,服务器可以自定义运行,不受用户登录注销影响的进程是守护进程 &:让一个命令在后台运行 jobs命令用于显示当前shell会话中的活动作业...,让这个独立的孤儿进程去启动服务器 tsvr->Start(); return 0; }

    31830

    linux 批量杀死多个进程 kill

    下面说说用管道符联接起来的 几个命令: “ ps - ef”是Red Hat 里查看所有进程的命令。这时检索出的进程将作为下一条命令“grep LOCAL=NO”的输入。...“grep LOCAL=NO”的输出结果是,所有含有关键“LOCAL=NO”的进程,这是Oracle数据库中远程连接进程的共同特点。...“grep -v grep”是在列出的进程中去除含有关键“grep”的进程。 “cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。...“kill -9”会强行杀掉指定进程,这样就成功清除了oracle的所有远程连接进程。其它类似的任务,只需要修改“grep LOCAL=NO”中的关键部分就可以了。...killall 进程名 如杀死java相关进程:killall java

    5.9K20

    讲解Linux进程概念

    那么问题来了,当有太多的加载进来的程序时,操作系统要不要管理这些加载进来的多个程序?怎么管理?如果那么多个程序中,我需要关闭一个,那要怎么关闭?怎么找到?.........同样的,一般来说我们计算机里面的硬件数量很少,一块键盘、一个显示器、一个磁盘、一个网卡等等,但是会有很多个进程,同时去访问硬件。那么问题来了!...4.1.2 挂起和阻塞 挂起状态: 当有许多个进程(PCB)处于阻塞状态的时候,这意味着有些是在短期内不能被使用的,如果此时内存空间不够了怎么办?...并行和并发: 并行: 多个进程多个CPU下分别同时进行运行,这称之为并行 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。...在32位下,一共有2^32个地址 3. 2^32位*1节 = 4GB空间范围 4.

    54220
    领券