通过TCP将客户端和服务器连接到不同的计算机上

时间:2016-12-10 12:49:49

标签: java linux windows sockets tcp

当我尝试使用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)

我是否必须配置防火墙或某些安全选项?

0 个答案:

没有答案