socket()函数
时间: 2024-01-23 21:06:54 浏览: 17
Socket()函数是一个用于创建套接字的函数。它的原型为int socket(int domain, int type, int protocol)。其中,domain参数指定了套接字的协议族,比如AF_INET表示IPv4协议族;type参数指定了套接字的类型,比如SOCK_STREAM表示面向连接的套接字;protocol参数指定了套接字的具体协议,通常使用0来自动选择默认协议。这个函数会返回一个非负整数,表示创建的套接字的文件描述符,如果返回值为-1,则表示创建套接字失败。
相关问题
socket函数返回值
在调用socket读写函数read()和write()时,都会有返回值。如果没有正确处理返回值,就可能引入一些问题。具体来说,socket函数的返回值有以下几种情况:
1. read()函数返回值为-1时,表示读取数据出错,需要根据errno的值来判断具体错误原因。
2. read()函数返回值为0时,表示对端已经关闭了socket,这时候也要关闭这个socket,否则会导致socket泄露。
3. write()函数返回值为-1时,表示写入数据出错,需要根据errno的值来判断具体错误原因。
4. 对于非阻塞的connect,可能返回-1。这时需要判断errno,如果errno == EINPROGRESS,表示正在处理中,否则表示连接出错了,需要关闭重连。之后使用select,检测到该socket的可写事件时,要判断getsockopt(c->fd, SOL_SOCKET, SO_ERROR, &err, &errlen),看socket是否出错了。如果err值为0,则表示connect成功;否则也应该关闭重连。
socket函数参数
socket函数是用于创建一个套接字的函数,它的参数如下:
1. domain:指定套接字的协议族,常见的有AF_INET(IPv4)和AF_INET6(IPv6)。
2. type:指定套接字的类型,常见的有SOCK_STREAM(流式套接字,用于TCP协议)和SOCK_DGRAM(数据报套接字,用于UDP协议)。
3. protocol:指定套接字所使用的协议,通常为0,表示根据domain和type自动选择合适的协议。
示例代码如下:
```c
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
```