IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【零基础】【含源码】python实现两台不同主机(或虚拟机)之间进行通信(客户端和服务端)——Socket -> 正文阅读

[网络协议]【零基础】【含源码】python实现两台不同主机(或虚拟机)之间进行通信(客户端和服务端)——Socket

python实现两台不同主机(或虚拟机)之间进行通信(客户端和服务端)——Socket


准备

首先,打开命令行,输入ipconfig,检查设备的IP地址和子网掩码,确保两台设备的IP地址在同一网段下(即IP地址子网掩码与运算的结果相同)。

例:
设备A

IPv4地址:192.168.1.2
子网掩码:255.255.255.0

设备B

IPv4地址:192.168.1.3
子网掩码:255.255.255.0

设备C

IPv4地址:192.168.2.4
子网掩码:255.255.255.0

结论:设备A和B在同一网段,设备C在另一网段。
IP地址和子网掩码修改方法:
控制面板\网络和 Internet\网络连接 -> 找到使用的适配器 -> 右键属性 -> Internet 协议版本4 -> 属性 -> 使用下面的IP地址 -> 输入想用的IP地址和子网掩码(其他项可空)-> 确定。

如果使用虚拟机进行连接

将设备的防火墙关闭(控制面板\系统和安全\Windows Defender 防火墙 -> 启动或关闭 Windows Defender 防火墙),同时保证虚拟机的也在同一网段。


服务端

在作为服务端的设备上,新建server.py,复制下面的代码,保存并运行。

from socket import *
# 创建套接字
tcp_server = socket(AF_INET, SOCK_STREAM)
# 将192.168.1.2换为本机的IP,8000为使用的接口(保持8000即可,可根据需要修改)
address = ("192.168.1.2", 8000)
tcp_server.bind(address)
# 启动被动连接,设置多少个客户端可以连接
tcp_server.listen(128)
# 使用socket创建的套接字默认的属性是主动的
# 使用listen将其变为被动的,这样就可以接收别人的链接了

# 创建接收
# 如果有新的客户端来链接服务器,那么就产生一个新的套接字专门为这个客户端服务
client_socket, clientAddr = tcp_server.accept()
# client_socket用来为这个客户端服务,相当于的tcp_server套接字的代理
# tcp_server_socket就可以省下来专门等待其他新客户端的链接
# 这里clientAddr存放的就是连接服务器的客户端地址

from_client_msg=client_socket.recv(1024)
while(1):
    #接收对方发送过来的数据
    from_client_msg = client_socket.recv(1024) #接收1024给字节,这里recv接收的不再是元组,区别UDP
    if(from_client_msg=="exit"): # 断开连接
        break
    print("接收的数据:",from_client_msg.decode("gbk"))
    now_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
    #发送数据给客户端
    send_data = client_socket.send((str(now_time)+" 已收到!").encode("gbk"))
client_socket.close()
#关闭套接字
#关闭为这个客户端服务的套接字,就意味着为不能再为这个客户端服务了
#如果还需要服务,只能再次重新连

客户端

在作为客户端的设备上,新建client.py,复制下面的代码,保存并运行(先运行服务端,再运行客户端)。

from socket import *
tcp_socket = socket(AF_INET,SOCK_STREAM)
# 服务端的IP地址和使用的接口
serve_ip = "192.168.1.3"
serve_port = 8000
tcp_socket.connect((serve_ip,serve_port))
while(1):
    send_data=input("Please input:") # 输入想发给服务端的信息
    tcp_socket.send(send_data.encode("gbk"))
    if send_data == "exit": # 断开连接
        break
    from_server_msg=tcp_socket.recv(1024) # 接收服务端的答复
    print(from_server_msg.decode("gbk"))
tcp_socket.close()


运行结果

先运行server.py,再client.py,两个设备间便可持续通信,直到客户端发送exit断开连接。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:52:13  更:2021-12-24 18:53:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:43:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码