使用Java将客户端连接到本地主机时出现问题
我正在尝试使用套接字设置受保护的客户端和受保护的服务器连接。每当我运行程序时,我都会收到一个连接错误,表示连接被拒绝。我在MacOS上运行的EclipseIDE中使用Java。你知道为什么这段代码不能连接到我的本地主机吗 受保护的客户端:使用Java将客户端连接到本地主机时出现问题,java,eclipse,sockets,localhost,Java,Eclipse,Sockets,Localhost,我正在尝试使用套接字设置受保护的客户端和受保护的服务器连接。每当我运行程序时,我都会收到一个连接错误,表示连接被拒绝。我在MacOS上运行的EclipseIDE中使用Java。你知道为什么这段代码不能连接到我的本地主机吗 受保护的客户端: public static void main(String[] args) throws Exception { String host = "localhost"; int port = 7999;
public static void main(String[] args) throws Exception
{
String host = "localhost";
int port = 7999;
String user = "George";
String password = "abc123";
Socket s = new Socket(host, port);
ProtectedClient client = new ProtectedClient();
client.sendAuthentication(user, password, s.getOutputStream());
s.close();
}
受保护服务器
public static void main(String[] args) throws Exception
{
int port = 7999; //7999
ServerSocket s = new ServerSocket(port);
Socket client = s.accept();
ProtectedServer server = new ProtectedServer();
if (server.authenticate(client.getInputStream()))
System.out.println("Client logged in.");
else
System.out.println("Client failed to log in.");
s.close();
}
运行程序时,我收到以下错误:
Exception in thread "main" java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:382)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:241)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:228)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:431)
at java.net.Socket.connect(Socket.java:527)
at java.net.Socket.connect(Socket.java:476)
at java.net.Socket.<init>(Socket.java:373)
at java.net.Socket.<init>(Socket.java:216)
at ProtectedClient.main(ProtectedClient.java:36)
线程“main”java.net.ConnectException中的异常:连接被拒绝
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:382)
位于java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:241)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:228)
位于java.net.socksocketimpl.connect(socksocketimpl.java:431)
位于java.net.Socket.connect(Socket.java:527)
位于java.net.Socket.connect(Socket.java:476)
位于java.net.Socket(Socket.java:373)
位于java.net.Socket。(Socket.java:216)
位于ProtectedClient.main(ProtectedClient.java:36)
我以前在使用特定套接字时遇到过此错误。尝试不同的插座,如5687。(或者,如果您需要特定的套接字,请尝试确保防火墙允许)
确保也在服务器上调用client.close()。如果您的程序工作过一次,它可能会阻塞该端口。我以前在使用特定套接字时遇到过此错误。尝试不同的插座,如5687。(或者,如果您需要特定的套接字,请尝试确保防火墙允许)
确保也在服务器上调用client.close()。如果您的程序工作过一次,它可能会阻塞该端口。您启动服务器了吗?也,看起来您的服务器将在一个客户端之后关闭。您是否检查了代理?@constantlearner在连接到环回接口(如LocalHost)时不使用代理您是否有防火墙阻止端口7999?最好从主方法中删除
抛出异常
,并在异常发生的位置处理异常你启动服务器了吗?也,看起来您的服务器将在一个客户端之后关闭。您是否检查了代理?@constantlearner在连接到环回接口(如LocalHost)时不使用代理您是否有防火墙阻止端口7999?最好从主方法中删除抛出异常
,并在异常发生的位置处理异常如果发生这种情况,将抛出BindException而不是泛型异常。不过,这仍然是一个很好的做法。感谢您的客户。close()建议。我现在收到“客户端登录”打印行。如果是这种情况,将引发BindException而不是一般异常。不过,这仍然是一个很好的做法。感谢您的客户。close()建议。我现在收到“客户端登录”打印行。