C语言socket相关函数
网络编程中的一些函数的具体用法
socket创建过程的一些函数
套接字创建函数
1 |
|
创建套接字,成功时返回文件描述符,失败时返回-1
绑定函数
1 |
|
调用bind函数给套接字分配IP地址和端口,成功时返回0,失败时返回-1
也就是说这个是自己给自己的绑定
监听函数
1 |
|
将套接字转化为可接收连接的状态,成功时返回0,失败时返回-1
接收函数
1 |
|
具体流程
调用socket函数创建套接字
调用bind函数分配IP地址和端口号
调用listen函数转为可接收请求状态
调用accept函数受理连接请求(accept函数会再返回一个套接字)
读写过程中的函数
虽然说是两组分别用在不同操作系统的函数,但实际上来说,几乎是都可以用的
read函数和write函数(听说大多数用在linux)
read函数
函数原型:
1 | include <unistd.h> |
- fd:显示数据接收对象的文件描述符
- buf:要保存接收数据的缓冲地址值
- nbytes:要接收数据的最大字节数
write函数
1 | ssize_t write(int fd, const void *buf, size_t nbytes); |
- fd:显示数据接收对象的文件描述符
- buf:要保存接收数据的缓冲地址值
- nbytes:要接收数据的最大字节数
recv函数和send函数(大多数用在windows)
recv函数
recv和read相似,都可用来接收sockfd发送的数据,但recv比read多了一个参数,也就是第四个参数,它可以指定标志来控制如何接收数据。
1 | ssize_t recv(int sockfd, void *buf, size_t nbytes, int flags); |
send函数
1 | int send(SOCKET sock, const char *buf, int len, int flags); |
其他小tips
ssize_t和size_t数据类型
- ssize_t是有符号整型,在32位机器上等同与int,在64位机器上等同与long int
几乎没有什么区别,就是一个整型变量
- size_t 就是无符号型的ssize_t,也就是unsigned long/ unsigned int (在32位下)
- size_t的正确定义应该是typedef unsigned long size_t。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ethanyi's Blog!
评论