[英]Client-Server application doesn't work properly
首先,對不起我的英語,這有點生銹。
我的目的是在遠程計算機上讀寫文本文件。 首先,我開發了一個簡單的客戶端-服務器程序,僅用於連接兩台計算機。 但是我有麻煩了。 如果我嘗試使用客戶端應用程序(我開發的客戶端應用程序)連接到服務器,則連接被拒絕。 但是,如果我使用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();
}
}
我剛剛編譯了您的代碼,它運行良好。 這是我得到的輸出:
服務器大豆客戶端NameLaptop / MyIPAddress
Hola clente /我的IP地址:52023
對於客戶
埃斯庫喬港(Escucho el puerto):2000 Sirvo客戶:/ MyIPAddress:52023
我認為您的代碼沒有問題。這可能與您在PC上設置的權限有關
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.