I am running the following client:
import socket
import Utility
import os.path
import time
def tolength(str, replacement, length):
return str + (replacement * (length - len(str)))
class Requester:
def __init__(self):
self.address = "/tmp/device-web-serverinterface.socket"
try:
self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
except:
print("Failed")
#raise Exception("The connection could not be established.")
def ask(self):
self.sock.connect(self.address)
self.sock.sendall(tolength("DO UNIX-Terminal -1", " ", 2048).encode())
self.sock.recv(2048)
self.sock.close()
self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
def main():
r = Requester()
while True:
r.ask()
time.sleep(10)
main()
in more than one instance. (With one instance everything works fine) and the following Server (once):
import threading
import socket
import os
class ListenerThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.adress = "/tmp/device-web-serverinterface.socket"
if os.path.exists(self.adress):
os.remove(self.adress)
def run(self):
self.bindsocket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
self.bindsocket.bind(self.adress)
self.bindsocket.listen(100)
while True:
newsocket, addr = self.bindsocket.accept()
print("Accepted")
string = newsocket.recv(2048).decode()
//Edited for better Use
br = "BAD REQUEST"
newsocket.sendall((br + " "*(2048-len(br))).encode())
newsocket.close()
def main():
l = ListenerThread()
l.run()
main()
when running the client I almost certainly get the error below after the second execute. I cannot decide which process to run (uwsgi) :
Mär 25 17:44:50 ******.stratoserver.net uwsgi[2724]: File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1936, in dispatch_request
Mär 25 17:44:50 ******.stratoserver.net uwsgi[2724]: return self.view_functions[rule.endpoint](**req.view_args)
Mär 25 17:44:50 ******.stratoserver.net uwsgi[2724]: File "/usr/local/lib/python3.6/dist-packages/flask_login/utils.py", line 272, in decorated_view
Mär 25 17:44:50 ******.stratoserver.net uwsgi[2724]: return func(*args, **kwargs)
Mär 25 17:44:50 ******.stratoserver.net uwsgi[2724]: File "./main.py", line 36, in device_post
Mär 25 17:44:50 ******.stratoserver.net uwsgi[2724]: return render_template('devices.html', message = devicecommunicator.ask())
Mär 25 17:44:50 ******.stratoserver.net uwsgi[2724]: File "./DeviceServerRequester.py", line 22, in ask
Mär 25 17:44:50 ******.stratoserver.net uwsgi[2724]: self.sock.connect(self.address)
Mär 25 17:44:50 ******.stratoserver.net uwsgi[2724]: OSError: [Errno 106] Transport endpoint is already connected
This makes no sense to the depth of my knowledge.
Edit: If I run this under MacOS I get the following Exception:
Traceback (most recent call last):
File "DeviceServerRequester.py", line 38, in <module>
main()
File "DeviceServerRequester.py", line 35, in main
r.ask()
File "DeviceServerRequester.py", line 20, in ask
self.sock.connect(self.address)
OSError: [Errno 9] Bad file descriptor
within the Client Code.