我有两个脚本,我正在积极地用于编程类。我的代码评论很好,我的老师更喜欢外部资源,因为有很多不同的解决方案。
虽然解决了实际问题,我需要创建一个带套接字的服务器(可以工作),然后允许另一台计算机使用单独的脚本连接到它(也可以使用)。问题是在建立连接之后。我希望这两个人能够来回发送消息。它发送的方式必须是字节形式,我如何设置,但返回的字节是不可能读取的。我可以解码它,但我希望它可以方便地位于命令提示符中。我尝试将主脚本(Connection.py)导入到辅助脚本(Client.py)中,然后运行主脚本。有什么方法可以阻止它运行吗?
这是我的主要脚本(创建服务器的脚本)
#Import socket and base64#
import socket
import base64
#Creating variable for continuous activity#
neverland = True
#Create socket object#
s = socket.socket()
print ("Socket created") #Just for debugging purposes#
#Choose port number for connection#
port = 29759 #Used a random number generator to get this port#
#Bind to the port#
s.bind((' ', port))
print ("Currently using port #%s" %(port)) #Just for debugging purposes#
#Make socket listen for connections#
s.listen(5)
print ("Currently waiting on a connection...") #Just for debugging purposes#
#Loop for establishing a connection and sending a message#
while neverland == True:
#Establish a connection#
c, addr = s.accept()
print ("Got a connection from ", addr) #Just for debugging purposes#
#Sending custom messages to the client (as a byte)#
usermessage = input("Enter your message here: ")
usermessage = base64.b64encode(bytes(usermessage, "utf-8"))
c.send(usermessage)
#End the connection#
c.close()
这是我的辅助脚本(连接到主要脚本的那个)
#Import socket module#
import socket
import Connection
#Create a socket object#
s = socket.socket()
#Define the port on which you want to connect#
port = 29759
#Connect to the server on local computer#
s.connect(('127.0.0.1', port))
#Receive data from the server#
print (s.recv(1024))
usermessage = base64.b64decode(str(usermessage, "utf-8"))
print (usermessage)
#Close the connection#
s.close()
在命令提示符下运行它们时,会发生以下错误:
它尝试再次运行主脚本并获取错误,我该如何阻止它?
答案 0 :(得分:0)
您通常实现此目的的方法是在读取脚本时不执行任何操作。即你只需要定义你的函数,类和变量,如果这个脚本是直接调用的,你可以这样调用它并引用适当的入口点。 E.g:
myvar = "world"
def main():
print("Hello", myvar)
if __name__ == "__main__":
main()
通过这种方式,您可以调用脚本python example.py
或从另一个脚本中导入脚本并在需要时使用内容:import example; print(example.myvar)
。
您也可以,这与上面不相互排斥,重构您的脚本并拥有一个包含公共/共享定义的文件,这些文件将导入并由您的两个脚本使用。