三十九、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是编码。发送需要编码,接收需要解码

      发送数据编码:(虚拟机给网络调试助手发,给其他软件发,加上格式)下图:

   

    接收需要解码:(网络调试助手给虚拟机发消息)下图:

   

 

   

 

猜你喜欢

转载自blog.csdn.net/xk1761299425/article/details/81710279
今日推荐