我试图运行以下代码:
public static void main(String args[]) throws UnknownHostException, MongoException{
Mongo m = new Mongo( "localhost", 27017 );
DB db = m.getDB( "test" );
Set<String> coll = db.getCollectionNames();
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,我遇到连接问题:
bc:java.net.ConnectException:连接被拒绝:连接
编辑:Nvm我忘了在后台运行数据库
如果客户端套接字在服务器套接字之前打开,Java将生成ConnectionException.所以我必须检查服务器是否可用并在执行前继续等待
socketChannel.open(hostname, port)
在客户端线程中.我找到了一个相关的API:
InetAddress.getByName(hostname).isReachable()
但是,这仍然无法判断特定端口上的套接字是否已打开.我认为这个问题应该很常见,但我没有从谷歌和其他地方获得非常有用的信息.
我没有遇到使用localips的套接字,但是一旦我将代码更改为使用public ips,我就一直得到java.net.ConnectException.
我使用端口8084,据我所知,在其他地方没有使用在命令提示符下,netstat -a | grep 8084显示:文件STDIN:TCP user-9114eb19a8:8084 user-9114eb19a8:0 LISTENING
我已经进入我的路由器并确保它是开放的我使用请求http://www.whatismyip.org获取我的公共IP
服务器:
serverSocket = new ServerSocket (8084);
Run Code Online (Sandbox Code Playgroud)
客户:
socket = new Socket (hostaddr, 8084); //hostaddr is a string containing my public-IP
//it works when the program is run on a localnetwork and I am using my local-ips
Run Code Online (Sandbox Code Playgroud)