python - 面向对象的套接字 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()
解决方案
推荐阅读
- html - 在多行中拆分句子(Bootstrap 4 + Mobile)
- c# - 如何编写代码以防止此错误消息来自正则表达式并通过单击关闭按钮随时关闭该表单?
- php - Laravel 日期比较不适用于 created_at 列
- forms - 如何选择将在 vue js 中循环的代码行?
- python-3.x - python3+中的矩阵乘法。我正在使用以下一行代码,但我得到错误,因为 TypeError: 'int' object is not callable
- python - 如何使用 MCMC 分解混合分布
- django - TemplateDoesNotExist 在/blog/home.html, blog/post_list.html
- python - django 想要显示用户登录添加任何
- pytest - 如何仅在使用过滤器调用 pytest 时禁用 pytest xdist?
- awk - awk: 如果行开始做某事,否则打印