Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何限制服务器仅在指定端口上启动?_C++_Sockets - Fatal编程技术网

C++ 如何限制服务器仅在指定端口上启动?

C++ 如何限制服务器仅在指定端口上启动?,c++,sockets,C++,Sockets,我有一个服务器,它监听特定端口(固定) 现在,如果该端口不可用,它将在任何随机端口上启动。我不要这个 如果指定的端口不可用,如何确保我的服务不启动 int fd = ::socket(AF_INET, SOCK_STREAM, 0); int32_t const opt = 1; struct sockaddr_in serv_addr; serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);

我有一个服务器,它监听特定端口(固定)

现在,如果该端口不可用,它将在任何随机端口上启动。我不要这个

如果指定的端口不可用,如何确保我的服务不启动

int fd = ::socket(AF_INET, SOCK_STREAM, 0); 
int32_t const opt = 1;
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(61014);
::bind(fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
::listen(fd, 5);

如上所示,您的代码将无法编译。但我认为您希望实现以下代码: 您必须检查bind()调用是否失败。如果是,则表示此端口已在使用中。您可能已经拥有一个端口,因此建议使用
so\u REUSEADDR
标志

if( bind(fd_desc,(struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
    //print the error message
    perror("Bind failed.");
    return 1;
}
if(绑定(fd_desc,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{
//打印错误消息
perror(“绑定失败”);
返回1;
}

请显示您的代码。将代码编辑到您的问题中,不要将代码发布到评论中,因为它不可读。