Python简单服务器-客户端

时间:2020-09-02 19:21:04

标签: python server client

我正在为网络课程从事的项目遇到麻烦。我应该做一个服务器-客户端RPS游戏,并通过HTTP消息发送引发选择。 我试图弄清楚如何使我的服务器服务于本地主机之外的其他IP。任何建议将不胜感激!

这是代码

服务器:

```import sys
from http.server import HTTPServer, BaseHTTPRequestHandler

newgame = ['Rock', 'Paper', 'Scissors']

# setup echoHandler to allow server to run

class echoHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        if self.path.endswith('/'):
            self.send_response(200)
            self.send_header('content-type', 'text/html')
            self.end_headers()


#HTML code for basic webpage 


            output = ''
            output += '<html><body>'
            output += 'Your move options are:'
            output += '<h1> Rock, Paper, Scissors</h1>'
            output += 'Please send your response... and one more thing'
            output += '<h3> GOOD LUCK BEATING ME BLAKE</h3>'
            output += "<h2>Please select a move</h2>"
            for game in newgame:
                output += game
                output += '</br>'
            output += '</body></html>'
# Not sure if professor will allow a form and submit combo, ask in office hours.

            # output += ''
            # output += '<html><body>'
            # output += '<h1> Enter your play</h1>'
            # output += '<form method="POST" enctype="multipart/form-data" action=/newgame/new">'
            # output += '<input name="move" type="text" placeholder="Enter move">'
            # output += '<input type="submit" value="add">'
            # output += '</form>'
            # output += '</body>'

            self.wfile.write(output.encode())



# define main to run program and take arguments for IP and Port

def main():
    PORT = 8000
    server = HTTPServer((sys.argv[1], PORT), echoHandler)
    print('Server running on port %s' % PORT)
    server.serve_forever()


if __name__ == '__main__':
    main() ```

这是客户:

```import socket
import sys


justin = sys.argv[1]
port = int(sys.argv[2])
portClient = int(sys.argv[3])
class Client:
# create the server bind and connection from CL

    HEADERSIZE = 10
    server = (sys.argv[1], int(sys.argv[2]))
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((justin, portClient))
    s.connect(((sys.argv[1]), int(sys.argv[2])))  #connect (ipadress, port)
    message = input("->")

# receive messages from server side

    while True:
        s.sendto(message.encode('utf-8'), server)
        data, addr = s.recvfrom(1234)
        data = data.decode('utf-8')
        print("received from server: " + data)
        message = input("->")
    sys.exit

    print(full_msg)```

0 个答案:

没有答案