我要创建一个套接字并获得InputStream
。这是我尝试的方式。
try {
final String serverIP = "111.111.111.111";
final int serverPort = Integer.parseInt(server_port);
final InetAddress serverAd=InetAddress.getByName(serverIP);
final InetAddress localAd =InetAddress.getByName(local_ip);
final int localPort = 4040;
Socket socket = new Socket(serverAd, serverPort, localAd, localPort);
}
但是有一个例外,
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:276)
at shootist.Porter.run(Porter.java:41)
此处服务器向我发送rtp数据,服务器端正常并确认。我发了邀请,也得到了200。如果我的IP和端口出现问题,我认为,所有响应都无法传送到我的IP和给定的端口。但是,当服务器向我发送对我的IP和给定端口号的响应时,它不会发生。 我该如何解决这个问题?我哪里错了什么?
答案 0 :(得分:9)
“连接被拒绝”错误意味着服务器计算机上的套接字堆栈收到了您的连接请求,并故意拒绝接受它。出现这种情况的原因有两个:
1)您尝试连接的端口上没有运行侦听套接字。
2)有一个侦听套接字,但其待处理连接的积压已满,因此此时无法为您的请求排队。
要区分这两者,请尝试重新连接几次,并在每次尝试之间延迟。如果你始终得到相同的错误,那么#1可能是罪魁祸首。确保端口号正确无误。如果#2是罪魁祸首,你的重新连接最终有可能成功。
答案 1 :(得分:1)
拒绝连接意味着您尝试连接到未在该端口上侦听的服务器,或者过于积压以接受连接。
测试此方法的一种简单方法是尝试
telnet 111.111.111.111 4040