我编写了一个python网络应用程序,它有2个组件代理和服务器。代理连接到服务器以发送数据。我使用pyinstaller将代理脚本转换为.exe文件。如果我没有添加选项 -w ,这将有助于隐藏控制台,代码工作正常。但是当我添加选项-w时,代码无法运行。 这是我的代理商代码:
componentDidMount
当我运行代理时,它无法运行,并且以下错误显示在服务器站点上:
def SocketConnect(Server_IP,PORT):
# Create Socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, e:
log_file.write(time.ctime() + " : Error creating socket : %s\n" %e)
log_file.close()
sys.exit(1)
# Connect
try:
s.connect((Server_IP, PORT))
except socket.error, e:
log_file.write(time.ctime() + " : Connect : %s\n" %e)
log_file.close()
sys.exit(1)
# Send Data
data = pickle.dumps({'OS':[OS()], 'CPU':[CPU()], 'DISK' : [DISK()], 'MEMORY': [MEMORY()], 'NETWORK': [NETWORK()], 'FIREWALL' : FIREWALL()})
try:
s.send(data)
except socket.error, e:
log_file.write(time.ctime() + " : Error sending data: %s\n" % e)
log_file.close()
sys.exit(1)
# Close Socket
s.close()
if __name__ == "__main__" :
config_file = open('AgentConfig.cfg', 'r') # Open Config File - Read
log_file = open('Log.txt', 'a') # Open Log File - Write
Server_IP = config_file.readline().rstrip()
PORT = int(config_file.readline().rstrip())
FREQUENCE = config_file.readline()
# Check valid Server_IP & PORT
parts = Server_IP.split(".")
if Server_IP == '' or PORT == '' :
log_file.write(time.ctime() + " : Server IP or Connect Port is not config !\n")
log_file.close()
sys.exit(1)
elif len(parts) != 4:
log_file.write(time.ctime() + " : Server IP is not a valid IP !\n")
log_file.close()
sys.exit(1)
else :
for item in parts:
if not 0 <= int(item) <= 255:
log_file.write(time.ctime() + " : Server IP is not a valid IP !\n")
log_file.close()
sys.exit(1)
elif PORT not in range(0,65536) :
log_file.write(time.ctime() + " : Port must be in range 0-65535 !\n")
log_file.close()
sys.exit(1)
else :
while True :
log_file = open('Log.txt', 'a') # Open Log File - Write
log_file.write(time.ctime() + " : Connect to Server at " + Server_IP + " : Port " + str(PORT) + "\n")
SocketConnect(Server_IP,PORT)
log_file.write(time.ctime() + " : Send data Success !\n")
log_file.close()
time.sleep(int(FREQUENCE))
这是Server上的相关代码。它用于从客户端接收数据。
----------------------------------------
Exception happened during processing of request from ('192.168.10.111', 21672)
Traceback (most recent call last):
File "C:\Python27\lib\SocketServer.py", line 290, in _handle_request_noblock
self.process_request(request, client_address)
File "C:\Python27\lib\SocketServer.py", line 318, in process_request
self.finish_request(request, client_address)
File "C:\Python27\lib\SocketServer.py", line 331, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Python27\lib\SocketServer.py", line 652, in __init__
self.handle()
File "Server.py", line 116, in handle
temp_list = pickle.loads(self.data).values()
File "C:\Python27\lib\pickle.py", line 1388, in loads
return Unpickler(file).load()
File "C:\Python27\lib\pickle.py", line 864, in load
dispatch[key](self)
File "C:\Python27\lib\pickle.py", line 886, in load_eof
raise EOFError
EOFError
----------------------------------------
我不知道为什么会这样。 pyinstaller的选项 -w 如何能够对我的代码产生影响?