socket编程 阻塞connect

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>

int main()
{
    struct sockaddr_in stServerAddress;
    bzero(&stServerAddress, sizeof(stServerAddress));
    
    inet_pton(AF_INET, "127.0.0.1", &stServerAddress.sin_addr);
    stServerAddress.sin_family = AF_INET;
    stServerAddress.sin_port = htons(12345);

    int nFd = socket(PF_INET, SOCK_STREAM, 0);
    int ret2 = connect(nFd, (struct sockaddr*)&stServerAddress, sizeof(stServerAddress));
    if(ret2 == -1)
        printf("%s\n", strerror(errno));
}

执行这段代码后的结果是“Connection refused”,程序立即结束,证明connect不是阻塞的,可是这里明明没有设置非阻塞connect呀,为什么connect会立即返回?

阅读 1.9k
1 个回答

你连接的是你自己的本机啊,如果你本机上没有执行监听 12345 端口的服务端程序的化,就会立即失败返回。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题