Linux中的套接字连接

时间:2016-06-20 23:57:45

标签: c linux sockets

我刚从linux中的connect API收到错误。

我知道如果连接成功,'connect'将返回零,我得到返回值“3”

是错误代码吗?或者还有什么不知道的东西?

Chef::Config[:log_level] = :warn

我从袜子里得到了价值3。

2 个答案:

答案 0 :(得分:5)

要获得connect()的返回值,最简单的方法是使用一个用作作业左侧的变量。

int result = connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
printf("connect returned: %d\n", result);

sock必须是套接字,并且在调用socket()时被分配了文件描述符编号。返回新文件描述符的大多数UNIX API将返回最低的可用文件描述符。程序通常从描述符012开始使用(对于STDIN,STDOUT和STDERR)。因此,socket()返回3并不意外。

答案 1 :(得分:0)

在linux系统(通常是posix)中,您可以使用perror函数来了解失败原因:

if (0 != connect(...))
{
    perror("connect");
}

请参阅man perror