socket通信的读写
ssize_t Read(int fd, void *buf, size_t count)
{
ssize_t rc;
if ((rc = read(fd, buf, count)) < 0)
unix_error("Read error");
return rc;
}
ssize_t Write(int fd, const void *buf, size_t count)
{
ssize_t rc;
if ((rc = write(fd, buf, count)) < 0)
unix_error("Write error");
return rc;
}
- TCP数据读写
#include <sys/types.h> #include <sys/socket.h> ssize_t recv(int sockfd,void *buf,size_t len,int flags); //buf是缓冲区地址,len是缓冲区大小,flag通常设置为0 //读取成功返回读取数据的长度,读取失败返回0,这时对方可能已经关闭连接 //返回-1表示出错,并设置errno ssize_t send(int sockfd,const void *buf,size_t len,int flags); //该函数往缓冲区buf写数据,len是缓冲区大小 //写成功返回实际写入数据长度,失败返回-1,并设置errno
- 通用读写数据函数,不仅用于TCP也可以用于UDP
ssize_t recvmsg(int sockfd,struct msghdr *msg,int flags); ssize_t sendmsg(int sockfd,struct msghdr *msg,int flags);