三十九、Udp网络1:使用socket 发送、接收数据,绑定端口和中文编码解码问题
一、初识Udp网络发送数据
(1)前提:必须要保证他们在同一个局域网中,要在一个网段才行
NetAssist.ext软件是用来协助我们完成网络请求:
网络设置:填写的是自己电脑上的IP地址。
目标主机和目标端口:填写的是你要给谁发送的那个人的ip地址和端口号。
发送的内容:在那个大白框中进行填写。
1、网络调试助手修改成虚拟机的网段
2、虚拟机改成桥接模式就和windows网段一样了
3、互相ping通
(2)在Linux给网络调试助手发消息:
1、先保证两个在同一网段,互相ping通,并且网络调试助手软件连接上,对应的ip地址网段一致
2、用vi命令进入文件写程序,python3加上b转化字节,python2不用加b
3、再在Linux上运行文件
(3)用程序实现给飞秋(软件)发送数据消息(用的sendto)
1、Linux上写程序,注意格式
2、格式:
上面的1表示版本号,后面的1238605487是发送的一个随机的时间,愿意写什么就写什么,飞秋不会检测的,
user是发送者的名字,后面就是发送者机器的名字,再后面的那个32非常的重要,有的时候是显示上线,
有的时候是收到消息,那这个32就是收到消息(必须写)。
再后面是发送的内容
3、后面以元组的形式,写对方的ip地址,和软件的端口号
4、运行文件即可(如果报网络问题,改成桥接模式试试)
二、绑定端口和中文编码解码问题
(1)通过网络调试助手给Linux发信息,Linux接收信息
1、一般情况下发送方是不绑定端口号的,而接收方需要绑定端口号,否则发送方不知道怎么发啊,给谁发啊。
套接字是可以收可以发的,这个过程是可以同时运行的。
2、代码如下,接收方绑定端口号(接收数据是元组形式)
循环接收信息:
3、网络调试助手发送信息,在同一网段,网络调试助手,填写目标主机的ip和端口号
(2)中文编码问题
1、在这里用encode(“utf-8”)不管用
这个软件默认使用的是gb2312或是gbk的编码方式(都是简体中文),可改程序
encode(“gb2312/gbk”)
2、decode是解码。encode是编码。发送需要编码,接收需要解码
发送数据编码:(虚拟机给网络调试助手发,给其他软件发,加上格式)下图:
接收需要解码:(网络调试助手给虚拟机发消息)下图: