【问题标题】:How can I bind serversocket to specific IP?如何将 serversocket 绑定到特定 IP?
【发布时间】:2013-02-05 06:40:30
【问题描述】:

如果我有一个代表 IP 地址(IPv4 或 IPv6)的 String,我如何创建一个 ServerSocket 并绑定到该 IP 而无需关心传入的 IP 是 IPv4 还是 IPv6?
我看到有一个构造函数:ServerSocket(int port, int backlog, InetAddress bindAddr)InetAddress 似乎没有提供任何构造函数,并且它的子类具有特定于 IPv4 和 IPv6 的名称。
那么如何将套接字绑定到 IP 呢?

【问题讨论】:

    标签: java tcp ip serversocket inetaddress


    【解决方案1】:

    您可以使用工厂方法INetAddress.getByName。它会确定使用哪个子类。例如:

    InetAddress addr = InetAddress.getByName("127.0.0.1");
    // or
    InetAddress addr = InetAddress.getByName("::1");
    
    // and now you can pass it to your socket-constructor
    ServerSocket sock = new ServerSocket(1234, 50, addr);
    

    【讨论】:

    • 你的意思是传入我的IP并取回对象?
    • @Jim:是的,没错!我已经添加了一个关于如何使用它的示例。
    • 请注意:默认的“积压”为 50 :D。
    • 另外注意:使用0作为积压会使用默认值
    • 什么是“积压”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2012-04-16
    • 2017-03-11
    • 2012-05-23
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多