Пример #1
0
    def start_server(self):
        """
          Creates a server
        """
        try:
            self.serverSocket = Server(self.server_address_entry_field.get(), self.server_port_entry_field.get())
            self.serverSocket.listen()
            self.serverSocket.main()
            self.message_window.insert(
                END,
                "\n"
                + "*** ACTING AS A SERVER: LISTENING ON PORT "
                + self.server_port_entry_field.get()
                + " ON ADDRESS "
                + self.server_address_entry_field.get()
                + " ***",
            )
        except:
            pass

        self.cancel_server()
        self.acting_as_server = True
Пример #2
0
class SocketGUI:
    def __init__(self):
        """ 
          Sets up the tkinter window and some attributes.
        """
        # Initialize Attributes
        self.port = 80
        self.address = "127.0.0.1"
        self.connected = False
        self.acting_as_server = False
        self.acting_as_client = True

        # Create Tkinter root window and set title
        self.root = Tk()
        self.root.title(PROGRAM_NAME + " " + VERSION)
        self.root.protocol("WM_DELETE_WINDOW", self.close)

        # Create frame
        self.fpopup = Frame(self.root, width=500)
        self.fpopup.pack(expand=1, fill=BOTH)

        # Create the menus
        self.menuobj = Menu(self.root)
        self.root.config(menu=self.menuobj)
        self.filemenu = Menu(self.menuobj, tearoff=0)
        self.menuobj.add_cascade(label="File", menu=self.filemenu)
        self.filemenu.add_command(label="Start Server", command=self.setup_server)
        self.filemenu.add_command(label="Stop Server", command=self.setup_server)
        self.filemenu.add_command(label="Connect", command=self.connect)
        self.filemenu.add_command(label="Disconnect", command=self.disconnect)
        self.filemenu.add_command(label="Exit", command=self.close)
        self.editmenu = Menu(self.menuobj, tearoff=0)
        self.menuobj.add_cascade(label="Edit", menu=self.editmenu)
        self.editmenu.add_command(label="Configuration", command=self.configuration)
        self.helpmenu = Menu(self.menuobj, tearoff=0)
        self.menuobj.add_cascade(label="Help", menu=self.helpmenu)
        self.helpmenu.add_command(label="About", command=self.about)

        # Create the message window
        self.message_window = ScrolledText(self.fpopup, width=90, height=24, background="white")
        self.message_window.pack(fill=BOTH, expand=YES)

        # Create the entry field
        self.entry_field = Entry(self.fpopup, width=60, background="white")
        self.entry_field.pack(side=LEFT, fill=BOTH, expand=YES)

        # Bindings
        self.entry_field.bind("<Return>", self.sendmessage_event)
        self.entry_field.bind("<Control-n>", self.connect_event)
        self.message_window.bind("<Control-n>", self.connect_event)

        # Create Buttons
        self.send_button = Button(self.fpopup, text="Send", command=self.sendmessage)
        self.send_button.pack(side=LEFT, expand=NO)

        # Start the Tk main routine
        self.root.mainloop()

    def configuration(self):
        """
          Sets up the configuration menu
        """
        self.configuration_menu = Toplevel()
        self.configuration_menu.title(PROGRAM_NAME + " - Configuration")

        self.port_label = Label(self.configuration_menu, text="Port:", width=40, anchor=W)
        self.port_entry_field = Entry(self.configuration_menu, width=40, background="white")
        self.address_label = Label(self.configuration_menu, text="Address:", width=40, anchor=W)
        self.address_entry_field = Entry(self.configuration_menu, width=40, background="white")
        self.save_configuration_button = Button(self.configuration_menu, text="Save", command=self.save_configuration)
        self.cancel_configuration_button = Button(
            self.configuration_menu, text="Cancel", command=self.cancel_configuration
        )

        self.port_entry_field.insert(END, str(self.port))
        self.address_entry_field.insert(END, self.address)

        self.port_label.grid(row=0, columnspan=2, sticky=W)
        self.port_entry_field.grid(row=1, columnspan=2, sticky=W, pady=5)
        self.address_label.grid(row=2, columnspan=2, sticky=W)
        self.address_entry_field.grid(row=3, columnspan=2, sticky=W, pady=5)
        self.save_configuration_button.grid(row=5, columnspan=2)
        self.cancel_configuration_button.grid(row=5, column=1, columnspan=2)

    def cancel_configuration(self):
        """
          Destroys the configuration menu
        """
        self.configuration_menu.destroy()

    def cancel_server(self):
        """
          Destroys the server setup menu
        """
        self.server_menu.destroy()

    def save_configuration(self):
        """
          Saves the configuration values and closes the window
        """
        self.port = int(self.port_entry_field.get())
        self.address = self.address_entry_field.get()
        self.configuration_menu.destroy()

    def about(self):
        """
          Calls the about window
        """
        tkMessageBox.showinfo("About", PROGRAM_NAME + " " + VERSION + "\n" + AUTHOR + "\n" + WEBSITE)

    def close(self):
        """
          Closes the whole application window
        """
        # Close the application
        if self.connected == True:
            self.clientSocket.sendmessage("/quit")
        if self.acting_as_server:
            self.serverSocket.close()
        self.root.destroy()

    def receiver(self, clientSocket, ADDR):
        """
          Receives the messages (called as a thread)
        """
        while 1:
            if self.connected == True:
                data = clientSocket.recv(1024)
                self.message_window.insert(END, "\n" + data)
                self.message_window.see(END)
                if data == "/quit":
                    self.connected = False
                    return 0

    def setup_server(self):
        """
          Calls the server setup menu
        """
        self.server_menu = Toplevel()
        self.server_menu.title(PROGRAM_NAME + " - Setup Server")

        self.server_port_label = Label(self.server_menu, text="Port:", width=40, anchor=W)
        self.server_port_entry_field = Entry(self.server_menu, width=40, background="white")
        self.server_address_label = Label(self.server_menu, text="Address:", width=40, anchor=W)
        self.server_address_entry_field = Entry(self.server_menu, width=40, background="white")
        self.start_server_button = Button(self.server_menu, text="Start", command=self.start_server)
        self.server_cancel_configuration_button = Button(self.server_menu, text="Cancel", command=self.cancel_server)

        self.server_port_label.grid(row=0, columnspan=2, sticky=W)
        self.server_port_entry_field.grid(row=1, columnspan=2, sticky=W, pady=5)
        self.server_address_label.grid(row=2, columnspan=2, sticky=W)
        self.server_address_entry_field.grid(row=3, columnspan=2, sticky=W, pady=5)
        self.start_server_button.grid(row=5, columnspan=2)
        self.server_cancel_configuration_button.grid(row=5, column=1, columnspan=2)

    def start_server(self):
        """
          Creates a server
        """
        try:
            self.serverSocket = Server(self.server_address_entry_field.get(), self.server_port_entry_field.get())
            self.serverSocket.listen()
            self.serverSocket.main()
            self.message_window.insert(
                END,
                "\n"
                + "*** ACTING AS A SERVER: LISTENING ON PORT "
                + self.server_port_entry_field.get()
                + " ON ADDRESS "
                + self.server_address_entry_field.get()
                + " ***",
            )
        except:
            pass

        self.cancel_server()
        self.acting_as_server = True

    def connect(self):
        """
          Connects the client to the given address and port
        """
        self.clientSocket = Client(self.address, self.port)
        try:
            if not self.connected:
                self.clientSocket.connect()
                self.connected = True
                thread.start_new_thread(self.receiver, (self.clientSocket.clientSocket, (self.address, self.port)))
            else:
                self.message_window.insert(END, "\n" + "Already connected!")
                self.message_window.see(END)
        except socket.error, (errno, errmessage):
            self.message_window.insert(END, "\n" + "**** ERROR No." + str(errno) + " --> " + str(errmessage) + " **** ")
            if errno == 111:
                self.message_window.insert(
                    END, "\n" + "Maybe you typed a false PORT or ADDRESS or the server has not been set up yet"
                )
            self.message_window.see(END)
Пример #3
0
import os
try:
    from SimpleHTTPServer import SimpleHTTPRequestHandler as Handler
    from SocketServer import TCPServer as Server
except ImportError:
    from http.server import SimpleHTTPRequestHandler as Handler
    from http.server import HTTPServer as Server

import os
import ssl

# Read port selected by the cloud for our application
PORT = int(os.getenv('PORT', 8000))

httpd = Server(("", PORT), Handler)
httpd.socket = ssl.wrap_socket(httpd.socket,
                               keyfile="private.key",
                               certfile="certificate.crt",
                               server_side=True)

# Change current directory to avoid exposure of control files
os.chdir('static')
try:
    print("Start serving at port %i" % PORT)
    httpd.serve_forever()
except KeyboardInterrupt:
    pass
httpd.server_close()
Пример #4
0
        ctype = self.guess_type(path)
        try:
            # Always read in binary mode. Opening files in text mode may cause
            # newline translations, making the actual size of the content
            # transmitted *less* than the content-length!
            f = open(path, 'rb')
        except IOError:
            self.send_error(404, "File not found")
            return None
        self.send_response(200)
        self.send_header("Content-type", ctype)
        fs = os.fstat(f.fileno())
        self.send_header("Content-Length", str(fs[6]))
        self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
        self.send_header("Access-Control-Allow-Origin", "*")
        self.end_headers()

        return f


httpd = Server(("", PORT), CORSHTTPRequestHandler)

# Change current directory to avoid exposure of control files
os.chdir('static')
try:
    print("Start serving at port %i" % PORT)
    httpd.serve_forever()
except KeyboardInterrupt:
    pass
httpd.server_close()
        self._set_headers()
        self.wfile.write("<html><body><h1>POST!</h1></body></html>")
		
		




if __name__ == '__main__':
    # Read port selected by the cloud for our application
    PORT = int(os.getenv('PORT', 8000))

    # start Thread with actual computation 
    thread = Process(target = Processing.start, args = ())
    thread.start()
        
        
    # Change current directory to avoid exposure of control files
    os.chdir('static')

    httpd = Server(("", PORT), Custom_Http)


    try:
      print("Start serving at port %i" % PORT)
      httpd.serve_forever()
    except KeyboardInterrupt:
      pass
    httpd.server_close()
    thread.terminate()
Пример #6
0
from socketClient import Client
from SocketServer import Server 
import sys, time, pickle, socket
tic = __import__("tictactoe2")

port, ipv4 = 1337, socket.gethostbyname(socket.gethostname())
choice = input("Type 1 for server, 2 for Client: ")

userport = input("Enter port number (Leave blank for port %s): " % (port))
port = userport if type(userport) == int else  port 

userhost = input("Enter IPv4 (Leave blank for %s): " % (ipv4))
host = userhost if userhost != None else ipv4

if choice == "1":
	game = Server(host, port)
else:
	game = Client(host, port)
game.start()

print("YOU ARE PLAYER", game.marker())

while not tic.gameover():
	tic.show()
	tic.counter += 1
	marker = tic.markers[tic.counter % 2] 

	# Determine who it is
	if game.marker() == marker:
		print("Your turn!")
		if tic.movesLeft(marker):