在套接字编程中,read()和recv(),以及send()和write()在性能、速度和其他行为方面有什么不同?
当前回答
根据谷歌的第一次点击
Read()等效于带有flags参数为0的recv()。flags参数的其他值会改变recv()的行为。类似地,write()等价于带有flags == 0的send()。
其他回答
“性能和速度”?那些不是…同义词,在这里吗?
无论如何,recv()调用接受read()不接受的标志,这使得它更强大,或者至少更方便。这是一个不同之处。我不认为有显著的性能差异,但还没有进行测试。
根据谷歌的第一次点击
Read()等效于带有flags参数为0的recv()。flags参数的其他值会改变recv()的行为。类似地,write()等价于带有flags == 0的send()。
您可以使用write()和read()来代替send()和recv(),但是send()和recv()对数据传输提供了更大的控制
linux上的另一件事是:
Send不允许对非套接字fd进行操作。因此,例如在usb端口上写入,写入是必要的。
区别在于recv()/send()只作用于套接字描述符,并允许您为实际操作指定某些选项。这些函数稍微专业化一些(例如,您可以设置一个标志来忽略SIGPIPE,或者发送带外消息……)。
函数read()/write()是适用于所有描述符的通用文件描述符函数。