前段疯狂ACMing。这事差点都忘记了。。。。。
两台机器要通信,肯定是交换东西啦。所以读写函数先介绍
ssize_t write(int sfd,const void *buf,size_t nbytes)
write函数将buf中的nbytes字节内容写入描述符sfd.
成功时返回写的字节数.失败时返回-1. 并设置errno变量.
1)write的返回值大于0,表示写了部分或者是全部的数据.
2)返回的值小于0,此时出现了错误.我们要根据错误类型来处理.
如果错误为EINTR表示在写的时候出现了中断错误.
如果为EPIPE表示网络连接出现了问题(对方已经关闭了连接).
读函数
ssize_t read(int fd,void *buf,size_t nbyte)
read函数是负责从fd中读取内容.当读成功时,read返回实际所读的字节数,
如果返回的值是0 表示已经读到文件的结束了,小于0表示出现了错误.
如果错误为EINTR说明读是由中断引起的, 如果是ECONNREST表示网络
连接出了问题.
其实大多数时候我们都是传递一个报文,一般我们会把一个结构memcpy到一个
buffer中,然后将这个buffer str在网络上传递.
高级套接字函数 之recv和send
int recv(int sockfd,void *buf,int len,int flags)
int send(int sockfd,void *buf,int len,int flags)
recv和send函数提供了和read和write差不多的功能.不过它们提供了第四个参数来控制
读写操作.
前面的三个参数和read,write一样,第四个参数可以是0或者一些组合。
notice:
如果有人看的是UNIX网络编程,注意readn那三个函数是stevens教主自己写的,在unp,h中,不要去调用,自己写可以。下次给个程序例子
(7)读写函数
最新推荐文章于 2022-04-05 22:22:58 发布