socket编程中write,read和send,recv之间的区别
1个回答
展开全部
1、recv和send函数提供了和read和write差不多的功能。但是他们提供了第四个参数来控制读写操作.
int recv(int sockfd,void *buf,int len,int flags)
int send(int sockfd,void *buf,int len,int flags)
前面的三个参数和read,write相同,第四个参数能够是0或是以下的组合:
_______________________________________________________________
| MSG_DONTROUTE | 不查找路由表 |
| MSG_OOB | 接受或发送带外数据 |
| MSG_PEEK | 查看数据,并不从系统缓冲区移走数据 |
| MSG_WAITALL | 等待任何数据 |
|————————————————————–|
如果flags为0,则和read,write一样的操作。
2、在unix中,所有的设备都可以看成是一个文件,所以我们可以用read来读取socket数据
int recv(int sockfd,void *buf,int len,int flags)
int send(int sockfd,void *buf,int len,int flags)
前面的三个参数和read,write相同,第四个参数能够是0或是以下的组合:
_______________________________________________________________
| MSG_DONTROUTE | 不查找路由表 |
| MSG_OOB | 接受或发送带外数据 |
| MSG_PEEK | 查看数据,并不从系统缓冲区移走数据 |
| MSG_WAITALL | 等待任何数据 |
|————————————————————–|
如果flags为0,则和read,write一样的操作。
2、在unix中,所有的设备都可以看成是一个文件,所以我们可以用read来读取socket数据
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询