【问题标题】:How to listen on IP and Port in Java ? with ServerSocket?如何在 Java 中监听 IP 和端口?与 ServerSocket?
【发布时间】:2014-03-20 10:45:39
【问题描述】:

我正在用 Java 创建一个客户端/服务器聊天(多线程)应用程序。

我想监听特定端口和 IP 上的客户端。

当我这样做时:

ServerSocket serverSocket = new ServerSocket(port);
Socket socket = serverSocket.accept();      // accept connection

// more code 

这是否意味着我正在收听的 IP 是 127.0.0.1 ?即localhost ?

从 ServerSocket 对象的构造函数来看,我们有 3 种构造函数:

public ServerSocket(int port) throws IOException
public ServerSocket(int port, int backlog) throws IOException
public ServerSocket(int port, int backlog, InetAddress bindAddr)  throws IOException

如果我想从 OTHER IP 地址获取客户端,我应该使用什么构造函数

这个:

public ServerSocket(int port) throws IOException

或者这个:

public ServerSocket(int port, int backlog, InetAddress bindAddr)  throws IOException

非常感谢

【问题讨论】:

  • @fge:当我使用第一个时,是否意味着我正在收听的 IP 是 127.0.0.1 ?即本地主机?
  • 呃,不,对不起,我弄错了;前两种形式将绑定到 0.0.0.0 和 ::0;即所有个本地接口,包括127.0.0.1。所以你真的应该使用第三种形式。

标签: java sockets tcp client-server serversocket


【解决方案1】:

这是否意味着我正在收听的 IP 是 127.0.0.1 ?即本地主机?

没有。这意味着您正在监听主机的所有 IP 地址。

如果我想从其他 IP 地址获取客户端,我应该使用什么构造函数?

这个。

【讨论】:

    【解决方案2】:
    InetAddress inetAddress = InetAddress.getByName("192.168.1.1");
    int port =8081;
    serverSocket = new ServerSocket(port,5,inetAddress);
    

    你是这个意思吗?希望对你有帮助。 而第二个争论的意思是 - 请求的传入连接队列的最大长度(来自 jdc)。

    【讨论】:

    • 他想从其他 IP 地址获取客户端。复数。您误读了问题。
    猜你喜欢
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    相关资源
    最近更新 更多