UDP 实现宿主机(windows)和ubuntu 互相通信

开始之前先说一下几个概念: 原 ip 源端口    目标ip 目标端口

假设 A  和B两台电脑之间相互通信,如A想发一段话给电脑B ,A电脑必须知道B电脑的ip地址,ip地址是电脑的唯一标识符,假设A电脑知道了B电脑的ip ,但是A电脑知道给B电脑那个程序(进程)发 嘛? 或者B得拿什么东西来接收,这就是端口的作用,端口就是表示主机中唯一进程的标识符,假设 A和B 电脑上各有一个wechat 正在运行,A电脑上的微信给B电脑上的微信发了一条消息,除了要知道B电脑的ip外,是不是也要知道B电脑上微信的唯一标识符(端口),要不然谁知道你要发给谁.

我接下来要实现宿主机和linux上的python编写通信程序,实现之间的信息交互,宿主机是在本地安装了一个网络调试助手模拟电脑主机,linux 是ubuntu 上编写的Python程序

宿主机(网络调试助手)给Ubuntu 发送消息

1.下载网络调试助手(安装)

下载地址:http://t.csdn.cn/6sScV

安装成功:

在windows的dos命令(cmd)中  输入      ipconfig     就可以查找到 本地ip地址

网络调试助手端口  :    每一个进程主机就会给其分配一个端口,用来表示程序的唯一性其范围一般大于(1024) 

网络调试助手上的端口,需要自己设置一般大于1024(特殊端口范围) 就行

在网络调试助手上输入ip和端口后点击   连接按钮     就行

2.

目标主机: ubuntu   ip地址      在ubuntu的终端输入 ifconfig   就可以找到     你想给和那个主机通信就写那个。

目标端口:  和你进行通信的进程(交互程序)   比如  我想将数据发给 微信  这个目标端口就是微信的端口,如果没有设置,主机会自动分配。

 接下来我要在ubuntu 中利用python写程序了 

输入下面命令: 如果你熟悉linxu shell 你可以自己写

cd      退到根目录

cd  ~/桌面    进到桌面目录下

sudo mkdir /opt/test_copy.py     在桌面下的opt文件下创建一个Python文件叫做test_copy.py 

使用vim 命令进入到这个文件将下方的代码写入其中需要更换的内容是  

udp_socket.sendto('我是你二大爷哎'.encode('gbk'),('192.168.10.1',8080))

192.168.10.1  目标ip    8080 目标端口  将这两个更换为自己的  自己通过ipconfig 查到的和 自己为网络调试助手设置的

import socket
def main():
    #
    while True:

        udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
        send_data = input("Please enter data")
        if send_data =='二大爷':
            break
        udp_socket.sendto(send_data.encode('gbk'),('192.168.10.1',8080))
        udp_socket.close()
    print("====run=======")

if __name__ == "__main__":
       main()

 输入完内容 按  esc 键 (笔记本电脑最左上方的键) 输入  :wq!  就退回到终端中  刚才vim 进的是编辑模式

在终端输入       python3  test_copy.py

因为我在test_copy.py 中创建input() 函数只要你执行这个文件程序就会就会提示你数如一段内容。

我输入了       二大爷        csdn 网络      学习  .........等等 

 wo

我们可以来看我们的接收端 主机192.168.10.1 端口号  8080  的模拟电脑主机的网络调试助手收到信息没。

 网络调试助手向   ubuntu   发送消息

1   cp   test_copy.py  绑定端口用来接收数据.py

test_copy.py      原文件   绑定端口用来接收数据.py 目标文件, 我将test_copy.py 重新 复制了一份,并且起名叫做绑定端口用来接收数据.py 两者的内容是一样的。

 vim  绑定端口用来接收数据.py    编辑(打开编辑  绑定端口用来接收数据.py python文件)

输入下方内容

import socket
def main():
        while  True:

            udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
            localaddr = ("",7788)
            udp_socket.bind(localaddr)
            recv_data = udp_socket.recvfrom(1024)
            if recv_data == "123":
                break
            print(recv_data)
            udp_socket.close()

if __name__ == "__main__":
            main()
 

 输入完内容 按  esc 键 (笔记本电脑最左上方的键) 输入  :wq!(强制保存并退出)  就退回到终端中  刚才vim 进的是编辑模式

我在ubuntu 的终端输入:python3  绑定端口用来接收数据.py

 你在网络调试助手输入后python那边就能看到你发送的消息。

猜你喜欢

转载自blog.csdn.net/weixin_59131972/article/details/130590693