python 2.x 和 python 3.x 的交叉兼容性用于网络
cross compatibility of python 2.x and python 3.x for networking
我一直在考虑使用 Raspberry pi 使用我的旧 RC 坦克开发机器人。我知道 raspberry Pi 附带 Python 2,但我在我的电脑上使用 Python 3。
机器人的最终目标是能够通过 python 将坐标传递给 pi,但我不确定 python 的 2 版本是否具有兼容的网络脚本。
我想使用他们的网络连接 Python 2 和 3,但我不确定它们是否兼容,或者我是否也必须在我的 PC 上下载 python 2?
这是我很可能最终会使用的代码,经过一些更改后,我是否能够从 python 3 脚本发送信息到 python 2 脚本:
import socket, Encryption, threading
class Networking():
StrName = ""
BlnCon = False
StrMsgs = []
Server = socket.socket()
StrMsgR = ""
C = Encryption.Cryption()
def ConnectTrd(self,E):
TrdNetworking = threading.Thread(target = self.Connect, args = (E.TextBoxs.TxtboxSet[2].StrMessage,int(E.TextBoxs.TxtboxSet[3].StrMessage),E.TextBoxs.TxtboxSet[4].StrMessage,E))
TrdNetworking.start()
def Connect(self, StrHost, IntPort, StrName,E):
self.StrName = StrName
self.Server.connect((StrHost, IntPort))
self.BlnCon = True
while self.BlnCon:
try:
self.RecvMsg(E)
except Exception as Error:
print(Error)
self.Server.close()
def SendMsg(self,Message,E):
if self.BlnCon:
StrMsg = Message
if StrMsg == "EXIT":
self.BlnCon = False
StrMsg = self.StrName + ": " + "EXIT"
else:
StrMsg = self.StrName + ": " + Message
try:
self.StrMsgs.append(str(self.StrName + ": " + Message))
self.Server.send(self.C.EncryptMsg(StrMsg).encode())
except Exception as Error:
print(Error)
else:
print("can't send message.")
self.WriteToTxBx(E)
def RecvMsg(self,E):
if self.BlnCon:
try:
self.StrMsgR = self.C.DecryptMsg(self.Server.recv(10240).decode())
except Exception as Error:
print(Error)
self.BlnCon = False
StrConCh = self.StrMsgR.split(":")
if StrConCh[1] == " EXIT":
StrMsg = self.StrName + ": " + "EXIT"
self.Server.send(self.C.EncryptMsg(StrMsg).encode())
self.BlnCon = False
self.StrMsgs.append(str(StrConCh[0]) + " has disconnected.")
else:
self.StrMsgs.append(self.StrMsgR)
self.WriteToTxBx(E)
def WriteToTxBx(self,E):
E.TextBoxs.TxtboxSet[0].StrMessage = ""
for IntZ in range(0,len(self.StrMsgs)):
while len(self.StrMsgs[IntZ])%55 != 0:
self.StrMsgs[IntZ] += " "
E.TextBoxs.TxtboxSet[0].StrMessage += self.StrMsgs[IntZ]
代码来自我不久前制作的 P2P 客户端,它也使用了我用 Pygame 制作的基本 GUI 引擎。
对于网络通信,双方用什么语言编写都无关紧要。
您的代码所做的只是通过网络发送字节。只要对方可以处理字节并发回其他字节,就可以了。 Python 2 完全有能力做到这一点。
我一直在考虑使用 Raspberry pi 使用我的旧 RC 坦克开发机器人。我知道 raspberry Pi 附带 Python 2,但我在我的电脑上使用 Python 3。
机器人的最终目标是能够通过 python 将坐标传递给 pi,但我不确定 python 的 2 版本是否具有兼容的网络脚本。
我想使用他们的网络连接 Python 2 和 3,但我不确定它们是否兼容,或者我是否也必须在我的 PC 上下载 python 2?
这是我很可能最终会使用的代码,经过一些更改后,我是否能够从 python 3 脚本发送信息到 python 2 脚本:
import socket, Encryption, threading
class Networking():
StrName = ""
BlnCon = False
StrMsgs = []
Server = socket.socket()
StrMsgR = ""
C = Encryption.Cryption()
def ConnectTrd(self,E):
TrdNetworking = threading.Thread(target = self.Connect, args = (E.TextBoxs.TxtboxSet[2].StrMessage,int(E.TextBoxs.TxtboxSet[3].StrMessage),E.TextBoxs.TxtboxSet[4].StrMessage,E))
TrdNetworking.start()
def Connect(self, StrHost, IntPort, StrName,E):
self.StrName = StrName
self.Server.connect((StrHost, IntPort))
self.BlnCon = True
while self.BlnCon:
try:
self.RecvMsg(E)
except Exception as Error:
print(Error)
self.Server.close()
def SendMsg(self,Message,E):
if self.BlnCon:
StrMsg = Message
if StrMsg == "EXIT":
self.BlnCon = False
StrMsg = self.StrName + ": " + "EXIT"
else:
StrMsg = self.StrName + ": " + Message
try:
self.StrMsgs.append(str(self.StrName + ": " + Message))
self.Server.send(self.C.EncryptMsg(StrMsg).encode())
except Exception as Error:
print(Error)
else:
print("can't send message.")
self.WriteToTxBx(E)
def RecvMsg(self,E):
if self.BlnCon:
try:
self.StrMsgR = self.C.DecryptMsg(self.Server.recv(10240).decode())
except Exception as Error:
print(Error)
self.BlnCon = False
StrConCh = self.StrMsgR.split(":")
if StrConCh[1] == " EXIT":
StrMsg = self.StrName + ": " + "EXIT"
self.Server.send(self.C.EncryptMsg(StrMsg).encode())
self.BlnCon = False
self.StrMsgs.append(str(StrConCh[0]) + " has disconnected.")
else:
self.StrMsgs.append(self.StrMsgR)
self.WriteToTxBx(E)
def WriteToTxBx(self,E):
E.TextBoxs.TxtboxSet[0].StrMessage = ""
for IntZ in range(0,len(self.StrMsgs)):
while len(self.StrMsgs[IntZ])%55 != 0:
self.StrMsgs[IntZ] += " "
E.TextBoxs.TxtboxSet[0].StrMessage += self.StrMsgs[IntZ]
代码来自我不久前制作的 P2P 客户端,它也使用了我用 Pygame 制作的基本 GUI 引擎。
对于网络通信,双方用什么语言编写都无关紧要。
您的代码所做的只是通过网络发送字节。只要对方可以处理字节并发回其他字节,就可以了。 Python 2 完全有能力做到这一点。