在Linux上socket认为时文件的一种,而在Windows上是要区分socket和文件的,所以他们的操作也是不同的。
Linux
打开文件
int open(const char *path, int flag) //成功时返回文件描述符,失败时返回-1
关闭文件
int close(int fd) //成功时返回0,失败时返回-1
这两个函数只是打开和关闭文件,下边才是数据传输函数,在Linux上,一切皆文件,故:
发送函数(数据写入文件函数)
ssize_t write(int fd, const void * bug, size_t nbytes) //成功时返回写入的字节数,失败时返回-1
ssize_t
是通过typedef
声明的signed int
类型
- fd 显示数据传输对象的文件描述符
- buf 保存要传输数据的缓冲地址值
- nbytes 要传输数据的字节数
读取函数(读取文件中的函数)
ssize_t read(int fd, void * buf, size_t nbytes) //成功时返回接受的字节数(但遇到文件结尾则返回0),失败时返回-1
- fd 显示数据接受对象的文件描述符
- buf 要保存接受数据的缓冲地址值
- nbytes 要接受数据的最大字节数
WinSock传输函数
发送函数
int send(SOCKET s, const char * buf, int len, int flags) //成功时返回传输字节数,失败时返回SOCKET_ERROR
- s 表示数据传输对象连接的套接字句柄值
- buf 保存待传输数据的缓冲地址值
- len 要传输的字节数
- flags 传输数据时用到的多种选项信息
接受函数
int recv(SOCKET s, const char * buf, int len, int flags)
- s 表示数据接受对象连接的套接字句柄值
- buf 保存接受数据的缓冲地址值
- len 能够接收的最大字节数
- flags 接受数据用到的多种选项信息