学习笔记之udp-socket双ip及非阻塞

当本地有两个ip时希望两个ip方向来的数据都能接到

int getfd()
{
	
	struct sockaddr_in ser_addr;
	int server_fd, ret;
	server_fd = socket(AF_INET, SOCK_DGRAM, 0); //AF_INET:IPV4;SOCK_DGRAM:UDP
	if (server_fd < 0)
	{
		printf("create socket fail!\n");
		return -1;
	}
	memset(&ser_addr, 0, sizeof(ser_addr));
	ser_addr.sin_family = AF_INET;
	ser_addr.sin_addr.s_addr = inet_addr(0.0.0.0); 
	ser_addr.sin_port = htons(SERVER_PORT);
	bzero(&(ser_addr.sin_zero),8); 
	
	ret = bind(server_fd, (struct sockaddr*)&ser_addr, sizeof(ser_addr));
	if (ret < 0)
	{
		printf("socket bind fail!\n");
		return -1;
	}
	struct timeval timeOut;
    timeOut.tv_sec  = 15;                 //设置15s阻塞超时
    timeOut.tv_usec = 0;
	
	if (setsockopt(server_fd, SOL_SOCKET, SO_RCVTIMEO, &timeOut, sizeof(timeOut)) < 0)
    {
        cout<< "time out setting failed" <<endl;
    }
	return server_fd;
}
发布了5 篇原创文章 · 获赞 2 · 访问量 50

猜你喜欢

转载自blog.csdn.net/weixin_41672404/article/details/105659685