非套接字C上的套接字操作

时间:2017-10-24 08:47:26

标签: c sockets

尝试使应用程序连接并侦听端口以获取数据时,我收到此错误。

{{1}}

我正在尝试连接到端口1234,听取它并接受它来接收数据,但错误仍然存​​在。

此外,我正在尝试使用netcat进行测试,但只要nc在我指定的端口上运行,就会收到不同的错误。

由于

1 个答案:

答案 0 :(得分:1)

int lis = listen(conn_s, SOMAXCONN);
fcntl(lis, F_SETFL, O_NONBLOCK);
while(1) {
    conn_s = accept(lis, NULL, NULL);

listen()不会返回套接字FD。它返回零或-1。因此,第二行是错误的,以下是accept()调用。它应该是:

if (listen(conn_s, SOMAXCONN) == -1)
{
    perror("listen");
    return; // or whatever
}
fcntl(conn_s, F_SETFL, O_NONBLOCK);
while(1) {
    int conn_c = accept(conn_s, NULL, NULL);

通过将conn_s的结果存储到其中,请勿丢失accept()