开始之前先说一下几个概念: 原 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.下载网络调试助手(安装)
安装成功:
在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那边就能看到你发送的消息。