1
ローカルホストで簡単な操作を行うプログラムを作った。数字や力を入力したり、別のクラスで計算して戻したりする私は、クライアントからデータを取得できるように、仮想マシンでこれを行う方法を知るために、ここでは仮想クライアントとそれに接続するための私のコードは次のとおりです。Java - ソケットを使用してローカルホストの代わりに仮想マシンに接続
:package clientedatos;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Scanner;
public class ClienteDatos
{
public static void main(String[] args) throws Exception
{
int Valor, Potencia;
Scanner Sc = new Scanner(System.in);
System.out.println("Capture un valor que sera elevado a una potencia");
Valor=Sc.nextInt();
System.out.println("Capture la potencia");
Potencia=Sc.nextInt();
ObjectOutputStream oos = null;
ObjectInputStream ois = null;
Socket s = null;
try
{
// instancio el server con la IP y el PORT
s = new Socket("127.0.0.1",5432);
oos = new ObjectOutputStream(s.getOutputStream());
ois = new ObjectInputStream(s.getInputStream());
// envio un nombre
oos.writeObject(Valor+","+Potencia);
long a=System.currentTimeMillis();
// recibo la respuesta (el saludo personalizado)
String ret = (String)ois.readObject();
long b=System.currentTimeMillis();
String[] respuesta = ret.split(",");
long Latencia = (a-b)-Integer.parseInt(respuesta[1]);
// muestro la respuesta que envio el server
System.out.println(respuesta[0]);
System.out.println("La latencia es: "+Latencia);
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
if(ois != null) ois.close();
if(oos != null) oos.close();
if(s != null) s.close();
}
}
}
そして、ここでは、サーバーのコードです
package datosclientes;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ServerDatos
{
public static void main(String[] args) throws Exception
{
ObjectInputStream ois = null;
ObjectOutputStream oos = null;
Socket s = null;
ServerSocket ss = new ServerSocket(5432);
while(true)
{
try
{
// el ServerSocket me da el Socket
s = ss.accept();
// informacion en la consola
System.out.println("Se conectaron desde la IP: "
+s.getInetAddress());
// enmascaro la entrada y salida de bytes
ois = new ObjectInputStream(s.getInputStream());
oos = new ObjectOutputStream(s.getOutputStream());
// leo el nombre que envia el cliente
long A=System.currentTimeMillis();
String ValorStr = (String)ois.readObject();
String[] input = ValorStr.split(",");
int Valor = Integer.parseInt(input[0]);
int Potencia = Integer.parseInt(input[1]);
// armo el saludo personalizado que le quiero enviar
for(int i = 1;i<Potencia; i++){
Valor=Valor*Valor;
}
long B=System.currentTimeMillis();
String saludo = "El resultado es "+Valor+","+(A-B);
// envio el saludo al cliente
oos.writeObject(saludo);
System.out.println("Resultado enviado...");
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
if(oos !=null) oos.close();
if(ois !=null) ois.close();
if(s != null) s.close();
System.out.println("Conexion cerrada!");
}
}
}
}
VirtualBoxまたはVMwareを使用している場合、ポートをローカルホストに転送できます。 –
これは実際にはJavaの質問ではありませんが、それは「仮想マシンで実行されているサーバーにどうやって接続しますか」です。プログラミング言語が本当に問題になるはずはありません。 –
ああ、申し訳ありません。Javaを使用しているので、場合によっては追加する必要があると思います。 –