2011-12-10 1 views
2

파이썬 소켓 http 서버를 실행할 때 오류가 발생합니다.왜 파이썬은 유형 문자열에서 형식 함수를 인식하지 못합니까?

import SocketServer 

class MyTCPHandler(SocketServer.BaseRequestHandler): 
    """ 
    The RequestHandler class for our server. 

    It is instantiated once per connection to the server, and must 
    override the handle() method to implement communication to the 
    client. 
    """ 

    def handle(self): 
     # self.request is the TCP socket connected to the client 
     self.data = self.request.recv(1024).strip() 
     print "{} wrote:".format(self.client_address[0]) 
     print self.data 
     # just send back the same data, but upper-cased 
     self.request.send(self.data.upper()) 

if __name__ == "__main__": 
    HOST, PORT = "localhost", 9999 

    # Create the server, binding to localhost on port 9999 
    server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler) 

    # Activate the server; this will keep running until you 
    # interrupt the program with Ctrl-C 
    server.serve_forever() 

오류 :

C:\Python25>python index.py 
---------------------------------------- 
Exception happened during processing of request from ('127.0.0.1', 2506) 
Traceback (most recent call last): 
    File "C:\Python25\lib\SocketServer.py", line 222, in handle_request 
    self.process_request(request, client_address) 
    File "C:\Python25\lib\SocketServer.py", line 241, in process_request 
    self.finish_request(request, client_address) 
    File "C:\Python25\lib\SocketServer.py", line 254, in finish_request 
    self.RequestHandlerClass(request, client_address, self) 
    File "C:\Python25\lib\SocketServer.py", line 521, in __init__ 
    self.handle() 
    File "index.py", line 15, in handle 
    print "{} wrote:".format(self.client_address[0]) 
AttributeError: 'str' object has no attribute 'format' 
---------------------------------------- 

그리고 내 클라이언트 :

import socket 
import sys 

HOST, PORT = "localhost", 9999 
data = " ".join(sys.argv[1:]) 

# Create a socket (SOCK_STREAM means a TCP socket) 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

try: 
    # Connect to server and send data 
    sock.connect((HOST, PORT)) 
    sock.send(data + "\n") 

    # Receive data from the server and shut down 
    received = sock.recv(1024) 
finally: 
    sock.close() 

print "Sent:  {}".format(data) 
print "Received: {}".format(received) 

이 여기 뭐가 문제

파이썬 official website에 예를 주어진? Python website에서

+0

Python 버전? 2.5? – blahdiblah

+0

@blahdiblah : OP 질문 :'C : \ Python25> python index.py' 그렇습니다. 파이썬 2.5입니다. – ereOn

+0

예, Python 버전 2.5 –

답변

4

:

format(value[, format_spec]) Convert a value to a “formatted” representation, as controlled by format_spec. The interpretation of format_spec will depend on the type of the value argument, however there is a standard formatting syntax that is used by most built-in types: Format Specification Mini-Language.

New in version 2.6.

그래서 나는 당신이 당신의 파이썬 버전을 업그레이드해야합니다 같아요.

또는 다른 구문을 사용합니다

print "%s wrote:" % self.client_address[0] 

self.client_address[0] 경우가 문자열로 변환 할 수 있습니다.

+0

대단히 감사합니다! 나는 파이썬 2.7로 업그레이드했다. –

+0

@RCola : 천만에요. 다행히 도울 수있어. – ereOn

관련 문제