当我尝试使用TCP套接字连接localhost上的客户端和服务器时,我有一个正常的代码。这是我的代码:
服务器
ServerSocket serverSocket = new ServerSocket (PORT);
serverSocket.setSoTimeout(TIMEOUT);
Socket clientSocket = serverSocket.accept();
ObjectOutputStream out = new ObjectOutputStream (clientSocket.getOutputStream());
//...
// out.writeObject(...);
// close the sockets and the output stream
客户端
Socket socket = new Socket (SERVER_NAME, PORT);
socket.setSoTimeout (TIMEOUT);
ObjectInputStream in = new ObjectInputStream (socket.getInputStream());
//...
//... = in.readObject();
// close the socket and the input stream
正如您所看到的,这是一个非常简单的代码,应该可以正常工作。事实上,它确实有效,直到SERVER_NAME
与"localhost"
不同。
我正在使用vitualizacion软件VMWare进行测试。我的操作系统是Windows,虚拟机的操作系统是Linux发行版CentOS。
我应该在哪里获得SERVER_NAME
?
编辑:一旦我做对了SERVER_NAME
我在客户端上获得了以下异常(在虚拟机上执行):
java.net.ConnectException: Conexión rehusada (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at Cliente.<init>(Cliente.java:64)
at Cliente.main(Cliente.java:28)
我是否必须配置防火墙或某些安全选项?