- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
为了简单起见,我将向您推荐http://en.wikipedia.org/wiki/Berkeley_sockets以及那里的 UDP 服务器和客户端源代码。
我正在尝试使用 UDP 协议(protocol)将数据包发送到 linux VirtualMachine 服务器程序。我的主机和 VM 都能 ping 通;所有发送的数据包都是双向接收的。但是我的服务器程序要么没有接收到任何数据包,要么根本就没有打印。无论哪种方式,它都不会打印我从主机发送给它的任何数据包的确认信息或内容。
我手边没有另一台 PC,但是如果我将它们放在同一台计算机上并且 Wireshark 报告数据包正在发送,那么这两个程序可以很好地通信。
我的问题分为三部分:首先,我该如何解决这个问题。其次,为什么主机和 VM 会收到彼此的 ping 消息,但不会将这些消息传递到我的 UDP 系统两端的开放套接字?最后,您对这个问题的形式或意图有什么建议吗?
编辑:我试过使用 NAT 和桥接适配器网络设置运行我的 VM。但是,我现在无法概念化这些设置与我的问题之间的关系。
最佳答案
使用 NAT 网络时,VM 获得一个私有(private) IP 地址(通常为 192.168.x.y),主机对传出数据包进行 NAT 转换,并将回复数据包转换回 VM。在这种模式下,所有通信都必须由 VM 发起——外部机器只能向 VM 发送数据包以回复 VM 发送给它们的数据包。在网络上,数据包看起来像是来自/去往某个不相关端口上的主机。
通过桥接网络,虚拟机获得一个直接连接到主机网络设备的设备。在此模式下,VM 显示为与主机位于同一网络 LAN 中的独立机器,具有自己的 IP 地址。您需要为其分配一个 IP 地址,就像主机分配一个 IP 地址(通常通过 DHCP)一样。
在任何一种情况下,要调试正在发生的事情,请在主机上使用 tcpdump/wireshark 来监视主机的网络设备。从 VM 发送数据包,您应该在跟踪中看到它们——在 NAT 情况下,它们似乎来自主机和不同的端口,并且在桥接案例。
一旦看到,您应该能够将数据包发送回 VM,但在 NAT 情况下,它们必须来自原始数据包发送到的地址/端口。
VirtualBox 桥接网络在 wifi 设备上无法正常工作存在一些已知问题;通常,您只能将桥接网络与有线网络结合使用。
关于linux - 无法使用 UDP 从我的 VirtualBox debian linux VM 发送或接收数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24874081/
尝试设置 Vagrant 但出现错误: The "VBoxManage" command or one of its dependencies could not be found. Please v
想象以下场景: 全新安装、未篡改的 VirtualBox 安装 通过 gem 全新安装 Vagrant 1.0.6 现在我试试这个: vagrant box add box_one [url to b
我有 Vagrant + VirtualBox。 在我的 Vagrantfile 中,我有 config.vm.provider "virtualbox" do |v| v.customize
最近,我在MacBook Air上安装了VirtualBox 6.1,并在其上安装了Windows 10(https://developer.microsoft.com/en-us/microsoft
这与 vagrant 或 virtualbox guest 因共享文件夹访问速度慢而运行缓慢无关,我们知道这可以通过启用 nfs 或多或少地解决。 它是关于 当 vm 中有许多文件操作时,挂载的共享文
我有一个 NAT 配置为在 VitualBox 中加载我最喜欢的 Linux 发行版时运行。这允许传出连接成功工作。 我如何允许传入连接到此框,例如 Web 流量? IP 地址为 10.0.2.15。
通过迁移助手将我的笔记本电脑从 2 核处理器升级到 4 核处理器后,出现以下错误: cpum#1: X86_CPUID_FEATURE_ECX_MOVBE is not supported by th
我在 Windows 7 上使用 virtualbox 4.3.12 我会在文件 > 首选项 > 网络 > 仅主机网络中更改仅主机适配器设置。 添加新的 IP 地址并单击保存后,Virtualbox
我希望我的 VM 有大量的屏幕空间。我可以滚动查看整个桌面,但我希望 VM 中的桌面比我当前的显示器大得多。例如,如果我有 1920x1080 显示器,我想要一个 2560x1600 桌面。 我知道这
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 25 天前关闭。 Improve t
我正在尝试将硬盘连接到 Minikube。我可以通过转到设置> 存储并从那里添加新硬盘来创建新硬盘,但我不知道如何将其连接到 Minikube。有谁知道怎么做?任何帮助将不胜感激! 最佳答案 为您的
我刚刚将 virtualbox 更新到最新的 4.1.16 r78094 并意识到我无法再启动我的虚拟机。 如果我启动虚拟机,显示的错误是: Failed to open a session for
在我的开发环境中编辑文件并将它们保存到我的客户操作系统 (CentOS) 后,客户提供已编辑文件的缓存版本(.css 或 .js)。 起初我认为这是一个本地浏览器缓存问题,但我已经删除、禁用、焚烧了所
我尝试使用 pacman 在 Arch(4.7.0-1) 上安装 Virtualbox,在我尝试运行它之前一切似乎都很好。我收到以下消息 警告:未加载 vboxdrv 内核模块。要么没有模块 可用于当
VirtualBox 能够压缩(减小尺寸).vdi图像,但不能使用 .vmdk磁盘镜像。但是我们可以压缩.vmdk文件,如果我们: 分离 转换为 .vdi 紧凑型 转换回 .vmdk 再次连接到原来的
我在谷歌上搜索过这个,找不到什么命令允许我在使用 vagrant 和 virtualbox 时分配视频内存。有人能告诉我它是什么吗?到目前为止,这是我的虚拟框配置: config.vm.provide
由于此错误,我在 virtualbox 中的虚拟机无法启动,我不想销毁它并重新安装它,无论如何都要恢复它? 执行 Vagrant 使用的 CLI VBoxManage 时出现错误用于控制 Virtua
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
当我尝试向我的 VirtualBox 添加/删除共享文件夹时出现此错误: ~$ VBoxManage sharedfolder add dev --name srv --hostpath "/my/
谁知道为什么awesomium组件(c#项目)在virtualbox下的操作系统(windows 7/8)中运行不加载页面? 最佳答案 确保您在 VM 中设置了至少 2 个处理器核心。 Awesomi
我是一名优秀的程序员,十分优秀!