首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通信套接字和VMware时出现问题-工作站存根

通信套接字和VMware时出现问题-工作站存根
EN

Stack Overflow用户
提问于 2011-11-12 23:10:27
回答 1查看 283关注 0票数 0

我正在用Java实现一个套接字,用于与VMware-Workstation (版本: 8.0.0 build-471780)通信。

我使用:Socket socket = new Socket("localhost",8832);创建套接字,因为我在本地运行虚拟机,8832是VMware监听的端口,用于调试defalut。连接没有被拒绝,也没有抛出任何类型的异常。但是,在我的进程和VMware存根之间建立通信时遇到了麻烦。

这些方法不能有效地发送或接收来自存根的任何内容:

代码语言:javascript
复制
public void sendStr(String str) throws IOException {
        out.write(str.getBytes());
}
public String getStr() throws IOException, ClassNotFoundException {//blocking call
    byte[] byteArray = new byte[40];
    in.read(byteArray);
    return new String(byteArray);
}

第二个方法永远不会结束,因为它是一个阻塞调用。

当我终止Java进程时,我的虚拟机注意到调试器连接丢失,所以我可以说连接已成功建立。

有人能帮帮我吗?我不知道该怎么做了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-12 23:15:24

您是否可以尝试在不使用虚拟机的情况下在同一系统中运行该程序?

忽略read的返回值并不节省,因为它可能无法读取整个长度。如果您希望收到与您发送时相同数量的“消息”,则您的应用程序可能会挂起。这是因为套接字是字节流,您可以组合或拆分任意数量的已发送字符串。

更安全的方法是使用DataOutput/InputStreams

代码语言:javascript
复制
final DataOutputStream out = 

public void sendStr(String str) throws IOException {
    out.writeUTF(str);
}

final DataInputStream in = 

public String getStr() throws IOException {//blocking call
    return in.readUTF(); // will return exactly on string.
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8105293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档