首先,对不起我的英语,有点生疏。
我的目标是在远程计算机上读取和写入文本文件。首先,我开发了一个简单的客户端-服务器程序,只是为了连接两台计算机。但我有麻烦了。如果我尝试使用客户端应用程序(我开发的应用程序)连接到服务器,连接将被拒绝。但如果我从 Windows 和 Ubuntu 命令提示符下使用 Telnet 进行操作,它就可以正常工作。客户端应用程序抛出以下异常(就像没有服务器在监听......):
java.net.ConnectException: Connection refused
另一点是它必须能够在 WAN 网络中建立连接(这是我的最终目标),而不仅仅是在 LAN 中(正如我所说,这里与 Telnet 配合良好)。
我把代码留在这里。非常感谢您的关注和耐心。
PD:代码是西类牙语,但我认为它很容易理解。
Servidor.java
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
public class Servidor {
//Constantes
final int MAX_CLIENTES = 5;
final int PUERTO = 2000;
/************/
//Métodos - constructor
public Servidor(){
ServerSocket skServidor;
try {
skServidor = new ServerSocket(PUERTO);
System.out.println("Escucho el puerto: "+PUERTO);
for(int numCli = 0; numCli < MAX_CLIENTES; numCli++){
Socket skCliente = skServidor.accept();
System.out.println("\tSirvo al cliente: "+skCliente.getRemoteSocketAddress());
OutputStream aux = skCliente.getOutputStream();
DataOutputStream flujo = new DataOutputStream(aux);
flujo.writeUTF("\nHola cliente "+ skCliente.getRemoteSocketAddress());
skCliente.close();
}
} catch(UnknownHostException e){
System.out.println( e );
System.out.println("Error en la conexión." );
}
catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e);
}
}
public static void main(String[] args){
new Servidor();
}
}
Cliente.java
import java.io.DataInputStream;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class Cliente {
//Constantes
final int PUERTO = 2000;
//final String HOST = "192.168.1.36";
/************/
//Métodos - constructor
public Cliente(){
try{
InetAddress address = InetAddress.getLocalHost();
Socket skCliente;
System.out.println("Soy el cliente "+address);
skCliente = new Socket(address, PUERTO);
InputStream aux = skCliente.getInputStream();
DataInputStream flujo = new DataInputStream(aux);
System.out.println(flujo.readUTF());
skCliente.close();
} catch(UnknownHostException e){
System.out.println( e );
System.out.println("Error en la conexión." );
} catch (Exception e) {
System.out.println(e);
}
}
//Cuerpo del programa
public static void main(String[] args){
new Cliente();
}
}
最佳答案
我刚刚编译了你的代码并且运行良好。这是我得到的输出:
服务器 Soy el cliente NameLaptop/MyIPAddress
Hola clente/MyIP地址:52023
对于客户
埃斯库乔港:2000 Sirvo al 客户:/MyIPAddress:52023
我认为您的代码没有问题。这可能是您的电脑上设置的权限有问题
关于java - 客户端-服务器应用程序无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20078556/