同一wifi下,安卓手机与linux虚拟机socket通信

我在linux虚拟机上建立了socket服务器,物理机为windows10,在安卓上建立socket客户端,是在Android Studio上写的,准备进行简单的socket通信。
当我在Android Studio上用安卓模拟器时,可以成功通信并处理。但我导出apk,安装在实体安卓手机上的时候,就连接不上,而且我windows物理机和安卓手机是在同一wifi环境下的。
windows和linux虚拟机可以ping互通,两边防火墙都关了。
实体通信需要什么具体的条件吗,为什么安卓模拟器可以成功,实体就连不上了?
急求解答!!!

或许是没有在同一网段,可以在pc端共享一个网络,客户端连接后就可以进行连接通讯了

安卓模拟器本身在物理主机上会获得一个端口与外部通信,此时你在模拟器上的数据收发全是模拟器的数据收发,当你打包移植到别的物理设备此时主机,ip,端口都需要重新配置。你看下你的网络配置是不是代码写死

看一下虚拟机设置里的网络适配器是不是桥接模式,如果不是应切换为桥接模式,再配置Linux IP和手机在同一网段

检查一下路由器是否开了AP隔离模式。

虚拟机设置->网络适配器:改为桥接模式,linux虚拟机重新dhcp获取下IP(或者手动分配局域网段IP),就可以了。这个是IP不同网段的问题。
安卓模拟器可以访问是因为默认虚拟机NAT模式下,可以直接跟宿主机正常通讯。

网络模式改成桥接模式就行了,模拟器系统也是路由器的IP