前提・実現したいこと
入門Python3(オライリー・ジャパン)のp342において、サーバを起動したいです。
Python3
1python3 knock_server.py
knock_server.pyの中身は以下のようになります。
Python3
1from twisted.internet import protocol, reactor 2 3class Knock(protocol.Protocol): 4 def dataReceived(self, data): 5 print 'Client:', data 6 if data.startswith("Knock knock"): 7 response = "Who's there?" 8 else: 9 response = data + " who?" 10 print 'Server:', response 11 self.transport.write(response) 12 13class KnockFactory(protocol.Factory): 14 def buildProtocol(self, addr): 15 return Knock() 16 17reactor.listenTCP(8000, KnockFactory()) 18reactor.run() 19
発生している問題・エラーメッセージ
以下のように、printの後に()が必要じゃない?のようなエラーメッセージが発生します。しかし書籍の方を見てみるとprintの後に()は入れていません...これが原因でしょうか?
該当のソースコード
Python3
1kotaMBA:python kota$ python3 knock_server.py 2 File "knock_server.py", line 5 3 print 'Client:', data 4 ^ 5SyntaxError: Missing parentheses in call to 'print'. Did you mean print('Client:', data)?
試したこと
試しにprintの後ろに()をつけて見たところ、以下のようになりエラーは出ませんでしたが作動しているのか不明です。
Python3
1kotaMBA:python kota$ python3 knock_server.py 2
()付きのknock_server.pyは以下になります。5行目と10行目にそれぞれ()をつけました。
Python3
1from twisted.internet import protocol, reactor 2 3class Knock(protocol.Protocol): 4 def dataReceived(self, data): 5 print ('Client:', data) 6 if data.startswith("Knock knock"): 7 response = "Who's there?" 8 else: 9 response = data + " who?" 10 print ('Server:', response) 11 self.transport.write(response) 12 13class KnockFactory(protocol.Factory): 14 def buildProtocol(self, addr): 15 return Knock() 16 17reactor.listenTCP(8000, KnockFactory()) 18reactor.run() 19
補足情報(FW/ツールのバージョンなど)
PCはMacを用いています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/22 02:37