bot*_*bot 56 networking network-programming tcp
我找到了几个答案,但它们似乎与Windows机器有关.所以我的问题是管道和插座之间的区别是什么,何时/如何选择一个而不是另一个?
Mik*_*ton 70
管道和插座之间有什么区别,何时/如何选择其中一个?
管道和套接字都处理字节流,但它们以不同的方式处理...
用法:
read()和write()管道.顺便说一句,您可以使用netcat或socat将套接字连接到管道.
Ale*_*Ale 23
要完成Mike给出的答案,重要的是要提到UNIX域套接字的存在,这些套接字可在任何符合POSIX的操作系统上使用.虽然在使用语义方面非常类似于"普通"互联网套接字,但它们纯粹是本地机器(当然互联网套接字也可以在本地工作),因此几乎就像管道一样.几乎是因为根据定义UNIX管道是单向的:
管道和FIFO(也称为命名管道)提供单向进程间通信通道.管道具有读取端和写入端.写入管道写入端的数据可以从管道的读取端读取.(摘自手册页管道(7))
UNIX域套接字也有一个非常不寻常的特性,除了数据之外,它们还允许发送文件描述符:这样,非特权进程可以访问其描述符已通过套接字发送的任何文件.根据维基百科的说法,这种技术被ClamAV防病毒扫描守护程序使用.