Python套接字服务器错误

时间:2012-08-18 14:05:28

标签: python sockets tcp python-2.7

我在发送到服务器的数据时遇到一些错误。我是Python套接字的新手,这是一个简单的脚本。这是

Exception happened during processing of request from ('ip', 53863)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 310, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 638, in __init__
    self.handle()
  File "serv.pyz", line 9, in handle
    print(self.client_address + ' : ' + self.data)
TypeError: can only concatenate tuple (not "str") to tuple

Serv.pyz(我知道,它应该是.py)

import SocketServer


class SEER(SocketServer.BaseRequestHandler):

def handle(self):
    while 1:
        self.data = self.request.recv(9000)
        print(self.client_address + ' : ' + self.data)
server = SocketServer.TCPServer(('', 4857), SEER)
server.serve_forever()

另外,我如何添加Client类来存储Client.room_id或Client.joinRoom(1)等内容?

4 个答案:

答案 0 :(得分:0)

尝试将打印功能更改为:

    print(str(self.client_address) + ' : ' + str(self.data))

根据错误,其中一个变量是元组,因此应将其转换为字符串。

答案 1 :(得分:0)

问题在于追溯:

print(self.client_address + ' : ' + self.data)

self.client_address是一个元组。你想要(在这种情况下)self.client_address [0] 要么是这样,要么在不同的行上打印出来

答案 2 :(得分:0)

self.client_address是元组,您应该使用self.client_address[0]代替this

答案 3 :(得分:0)

self.client_address是一个元组,而不是一个字符串!所以你需要打印它的str()。

SEER是您的客户端类,因此创建self.room_id等来存储客户端状态和实现方法。

TCP也是一种流媒体协议,因此您需要在其上实施消息协议,以确保您拥有完整的消息。有关示例,请参阅this answer

相关问题