Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-使用套接字连接到虚拟机而不是本地主机_Java_Sockets_P2p - Fatal编程技术网

Java-使用套接字连接到虚拟机而不是本地主机

Java-使用套接字连接到虚拟机而不是本地主机,java,sockets,p2p,Java,Sockets,P2p,我制作了一个程序,在本地主机上执行简单的操作,例如键入一个数字和一个幂,在另一个类中计算并发回,但我想知道如何使用虚拟机执行此操作,以便从客户端获取数据,以下是我的虚拟客户端代码及其连接: package clientedatos; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import java.util.Scanner; public class C

我制作了一个程序,在本地主机上执行简单的操作,例如键入一个数字和一个幂,在另一个类中计算并发回,但我想知道如何使用虚拟机执行此操作,以便从客户端获取数据,以下是我的虚拟客户端代码及其连接:

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!");
}
}
}
}
数据包客户;
导入java.net.ServerSocket;
导入java.net.Socket;
导入java.io.ObjectInputStream;
导入java.io.ObjectOutputStream;
公共类ServerDatos
{
公共静态void main(字符串[]args)引发异常
{
ObjectInputStream ois=null;
ObjectOutputStream oos=null;
套接字s=null;
ServerSocket ss=新的ServerSocket(5432);
while(true)
{
尝试
{
//el服务器插座me da el插座
s=ss.accept();
//康索拉信息酒店
System.out.println(“Se conectaron desde la IP:”
+s、 getInetAddress());
//恩马斯卡罗·恩特拉达和萨利达·德比特斯
ois=新的ObjectInputStream(s.getInputStream());
oos=新的ObjectOutputStream(s.getOutputStream());
//leo el nombre que envia el cliente
长A=System.currentTimeMillis();
字符串ValorStr=(字符串)ois.readObject();
字符串[]输入=ValorStr.split(“,”);
int Valor=Integer.parseInt(输入[0]);
int-potentia=Integer.parseInt(输入[1]);
//埃莫·埃尔·萨卢多·阿莫·勒奎罗·埃维亚尔

对于(int i=1;i这与连接到物理主机没有区别。您需要在两台计算机之间建立网络连接(这是虚拟机设置的一部分),然后指定适当的ip地址(或主机名,如果通过名称解析机制可用)和端口,而不是
127.0.0.1


对于命令行工具,您通常从参数读取目标地址。

这与连接到物理主机没有区别。您需要在两台计算机之间建立网络连接(这是虚拟机设置的一部分),然后指定适当的ip地址(或主机名,如果通过名称解析机制可用)和端口,而不是
127.0.0.1


对于命令行工具,您通常从参数中读取目标地址。

如果您使用的是VirtualBox或VMware,则可以将端口转发到本地主机。但这并不是真正的Java问题……更多的是“如何连接到在虚拟机中运行的服务器”.编程语言不应该真的很重要Roh,很抱歉,我只是在使用Java,所以我想我应该添加它以防万一。不用担心,只要让您知道,如果您已经尝试搜索解决方案,对于不同的语言,该过程不应该有任何不同。如果您使用的是VirtualBox或VMware,您可以转发本地主机的端口。这不是一个真正的Java问题,而是“如何连接到运行在虚拟机中的服务器”.编程语言不应该真的很重要Roh,很抱歉,只是我在使用Java,所以我想我应该添加它以防万一。不用担心,只要让您知道,如果您已经尝试搜索解决方案,对于不同的语言,过程不应该有任何不同。