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;
}
请显示您的代码。将代码编辑到您的问题中,不要将代码发布到评论中,因为它不可读。