朗读

完美解决udp无法发送数据

文章目录[x]
  1. 1:用到的udp发送python代码
  2. 2:打开网络调试助手
  3. 3:然后我们在Linux下运行python代码
  4. 4:重点来了-->这是怎么回事呢
  5. 5:配置虚拟机网络设置
  6. 6:再次执行程序

最近在学习python网络编程这一块的时候,发现在虚拟机下的Linux系统无法给同在局域网中的本机电脑无法发送数据(或者是虽然没有报错,但是windoes无法接收到发送过来的数据),小生就来记录一下这一次的错误。

环境

在windoes下就是网络调试助手这个软件(这个可以直接百度下载)

另外就是虚拟机下的Linux系统了

下面的图片是我用的win环境下的网络调试助手

我这里要说的就是正常软件一运行左上角显示的ip地址属于局域网,但是并不是本机ip,这是因为电脑中装了好几个网卡(比如虚拟机用的虚拟网卡)。

我们想要查看有关网关ip信息可以用cmd命令在dos窗口下输入以下命令。

 

ipconfig

或者

ipconfig\all

 

你会看到当前状态下连接的网卡信息。

用到的udp发送python代码

 

#!/usr/bin/python3
# *-* coding: utf-8 *-*
import socket

def main():
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

udp_socket.sendto(b"hahahah", ("192.168.6.1", 8080))

<strong># sendData = "洛尘曦"</strong>
<strong># udp_socket.sendto(sendData.encode("gb2312"), ("192.168.6.1", 8080))</strong>

udp_socket.close()

# print("_" * 50)

if __name__ == '__main__':
main()
中间注释的两行是用来发送汉字的,其中的gb2312是我用的网络调试助手的编码格式 

打开网络调试助手

软件运行之后点击打开

下面是开开后

然后我们在Linux下运行python代码

我们发现没有报错,但是Windows下的调试助手并没有接收到数据

重点来了-->这是怎么回事呢

首先我们在Linux下用一下ping命令

 

ping 127.0.0.1 #查看本地是否异常

ping 192.168.6.1 #测试目标主机

 

我们发现当ping 192.168.6.1时卡在那一直不动。

我们知道只有在同一个网段才可以通信,下面我们看一下Linux的ip网段,在终端中执行下面代码

 

ifconfig

或者

ipconfig | grep inet

我们发现当前ip是 192.168.1.13 而目标主机是192.168.6.1显然不在一个网段,只有前三项一样才在同一个网段

配置虚拟机网络设置

这个时候我们要想它们在同一个网段,就需要调一下Vm的网络设置了

我们先点击如下图

然后修改选项

这个时候,我们再用命令查看ip,发现在同一个网段

再次执行程序

这个时候我们发现就可以接收到数据了呢

 

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

Title - Artist
0:00