問個菜鳥級的問題,recv和read區別


問個菜鳥級別的問題,在linux的socket中,接受數據可以用recv 和read,那么這兩個函數有什么區別呢?希望能從阻塞和非阻塞SOCKET兩種情況下,幫忙解釋下。

5 个解决方案

#1



int recv(int sockfd,void *buf,int len,int flags) 

recv 比read 的功能強大點,體現在recv提供的flags參數上,
recv最終的實現還是要調用read。

recv和read都可以操作阻塞或非阻塞,阻塞非阻塞與recv和read沒關系,它是socket的屬性,函數fcntl可以設置。

#2


MSDN

#3


windows 下沒有 read

#4


引用 1 樓 wiresharker 的回復:
int recv(int sockfd,void *buf,int len,int flags) 

recv 比read 的功能強大點,體現在recv提供的flags參數上,
recv最終的實現還是要調用read。

recv和read都可以操作阻塞或非阻塞,阻塞非阻塞與recv和read沒關系,它是socket的屬性,函數fcntl可以設置。


flags參數怎么用啊,多說兩句啊

#5


flags 貌似為0時是選擇默認的協議,如果不是0的話,選擇特定的協議。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com