localhost和127.0.0.1的区别

简介: localhost和127.0.0.1的区别

localhost和127.0.0.1的区别


bzero(&servaddr,sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    //inet_pton(AF_INET,ip,&servaddr.sin_addr);
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);//绑定所有网卡所有IP
    //servaddr.sin_addr.s_addr = inet_addr("172.16.6.178");
    //servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");//这样写指代不明,当服务器有多网卡时,不知道绑定哪个IP,导致连接失败
    servaddr.sin_port = htons(port);
    if (bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) == -1)
    {
        perror("bind error: ");
        exit(1);
    }


实测现象:


Linux虚拟机或腾讯云作为服务器,建立TCP server,如果IP地址直接填写127.0.0.1,即是loopback,环路地址。结果是:Windows实体机作为客户端,发起TCP连接失败,访问不到虚拟机或云。


开源项目ananas会把"localhost"翻译成本机的IP地址,如:192.168.133.131,所以实体机客户端TCP发起连接成功。


void Init(const char* ip, uint16_t hostport) {
        std::string sip = ConvertIp(ip);
        addr_.sin_family = AF_INET;
        addr_.sin_addr.s_addr = ::inet_addr(sip.data());
        addr_.sin_port = htons(hostport);
    }
std::string ConvertIp(const char* ip) {
    if (strncmp(ip, "loopback", 8) == 0)
        return "127.0.0.1";
    if (strncmp(ip, "localhost", 9) == 0) {
        ananas::SocketAddr tmp;
        tmp.Init(ananas::GetLocalAddrInfo(), 0);
        return tmp.GetIP();
    }
    return ip;
}
相关文章
|
存储 Java Linux
10分钟入门Flink--安装
本文介绍Flink的安装步骤,主要是Flink的独立部署模式,它不依赖其他平台。文中内容分为4块:前置准备、Flink本地模式搭建、Flink Standalone搭建、Flink Standalong HA搭建。
10分钟入门Flink--安装
|
Web App开发 存储 缓存
RDMA优化整理(一)
简要的介绍了下RDMA的背景,并给出了一些RDMA编程优化技巧
4180 1
RDMA优化整理(一)
|
Ubuntu 网络安全 Docker
|
Python
Python中如何按行遍历DataFrame
听世界的意见,保留自己的态度。
2204 0
|
12月前
|
SQL 算法 API
死磕flink(三)
死磕flink(三)
|
9月前
|
人工智能 程序员 开发者
如何使用Ascend的ATB加速库?
ATB加速库专为Transformer模型优化设计,基于华为Ascend AI处理器,提升训练和推理效率。本文档详细介绍了如何实现一个ATB算子,涵盖基础Operation、插件机制和Graph Frame三种方式,从环境准备、算子创建、资源管理到最终执行,提供了完整的代码示例和步骤指南,帮助开发者快速掌握ATB算子的开发流程。
|
机器学习/深度学习 人工智能 自然语言处理
|
12月前
|
分布式计算 大数据 数据处理
死磕Flink(一)
死磕Flink(一)
|
12月前
|
存储 分布式计算 大数据
死磕Flink(二)
死磕Flink(二)
|
Kubernetes 关系型数据库 网络架构
ray集群部署vllm的折磨
概括如下: 在构建一个兼容多种LLM推理框架的平台时,开发者选择了Ray分布式框架,以解决资源管理和适配问题。然而,在尝试集成vllm时遇到挑战,因为vllm内部自管理Ray集群,与原有设计冲突。经过一系列尝试,包括调整资源分配、修改vllm源码和利用Ray部署的`placement_group_bundles`特性,最终实现了兼容,但依赖于非官方支持的解决方案。在面对vllm新版本和Ray部署的`reconfigure`方法问题时,又需权衡和调整实现方式。尽管面临困难,开发者认为使用Ray作为统一底层仍具有潜力。