-1

我正在使用 Mac 并尝试在本地计算机上运行服务器。这是代码

//1. creating a server socket
        providerSocket = new ServerSocket(0, 10);
        //2. Wait for connection
        System.out.println("Waiting for connection");
        try{
        connection = providerSocket.accept();
        }
        catch (IOException ex){
            System.err.println(ex);
        }
        System.out.println("Connection received from " +                   connection.getInetAddress().getHostName());

我看到打印“等待连接”但没有打印“从...收到连接”我看到代码仍在运行,这意味着接受()被阻止?我怎样才能解决这个问题 ?

4

3 回答 3

1

您必须有一个连接到该服务器的客户端。直到那时服务器将等待。

检查此链接:

http://www.javaworld.com/jw-12-1996/jw-12-sockets.html

于 2013-03-28T14:49:24.153 回答
1

由于您使用0的是端口号,这意味着ServerSocket它将侦听任何可用的空闲端口。您必须确保客户端连接到该端口上的服务器。端口可以​​通过 获得ServerSocket.getLocalPort()

更好的方法是硬编码端口号并使客户端连接到该端口。

于 2013-03-28T14:58:26.600 回答
0

accept() 阻塞,直到建立连接。您实际上是否有客户端尝试访问套接字?如果没有,我认为运行以下 java 跟踪对您是有益的。

于 2013-03-28T14:48:43.307 回答