首页 > 解决方案 > 面向对象的套接字 Python 客户端服务器。将修改后的客户端消息传递给服务器

问题描述

我正在尝试构建一个 Python 程序,它将在客户端和服务器之间传递消息。这个想法是从服务器传递一条消息,让客户端修改它并将其传递回服务器。

现在我很讨厌尝试将客户端的消息传回服务器;消息'恭喜!You have connected' 转换为大写,

服务器

import socket

class Server:

    def __init__(self, host, port):
        self.serverSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        self.host = host
        self.port = port

    def bind(self):
        self.serverSocket.bind((self.host, self.port))
        self.serverSocket.listen(5)

    def run(self):
        while True:
            print ('Waiting for a connection')
            (clientSocket, addr) = self.serverSocket.accept()
            print ('Got a connection from {}'.format(str(addr)))
            message = 'Congrats! You have connected'
            self.sendMessage(message, clientSocket)
            self.recieveMessage()
            clientSocket.close()

    def sendMessage(self, message, clientSocket):
        clientSocket.send(message.encode('ascii'))

    def recieveMessage(self):
        (clientSocket, addr) = self.serverSocket.accept()
        message = self.serverSocket.recv(1024).decode('ascii')
        print(message)

    def closeSocket(self):
        self.serverSocket.close()


if __name__ == '__main__':
    myServer = Server('127.0.0.1', 5555)
    myServer.bind()
    myServer.run()
    myServer.recieveMessage()
    myServer.closeSocket()

客户

import socket


class Client:

    def __init__(self, host, port):
        self.serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.host = host
        self.port = port

    def connect(self):
        self.serverSocket.connect((self.host, self.port))

    def getMessage(self):
        return self.serverSocket.recv(1024).decode('ascii')

    def modifyMessage(self):
        return message.upper()

    def sendMessage(self, upperCaseMessage, server):
        (server, addr) = self.serverSocket.accept()
        serverSocket.send(upperCaseMessage.encode('ascii'))

    def closeConnection(self):
        self.serverSocket.close()


if __name__ == '__main__':
    myClient = Client('127.0.0.1', 5555)
    myClient.connect()
    message = myClient.getMessage()
    upperCaseMessage = myClient.modifyMessage()
    myClient.sendMessage(upperCaseMessage, serverSocket)
    myClient.closeConnection()

标签: pythonsocketsoopserverecho

解决方案


推荐阅读