#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会立即返回?
你连接的是你自己的本机啊,如果你本机上没有执行监听 12345 端口的服务端程序的化,就会立即失败返回。