2016-05-12 13 views
0

私は以下のPythonソケットクライアントを持っています。ソケットサーバーに小さなメッセージを送信します。 Python 2.7では、これは欠陥なく動作します。しかし、3.4では次のトレースバックを取得します。実装は変更されていますか?私はデバッグするために取るべきアプローチは何ですか?Python2.7とPython3.4 socket.send

Traceback (most recent call last): 
    File "echo-client.py", line 19, in <module> 
    sockobj.send(line) 
TypeError: 'str' does not support the buffer interface 

import sys 
from socket import * 


_server = 'localhost' 
_port = 50007 

message = ['Hello network world'] 

if len(sys.argv) > 1: 
    _server = sys.argv[1] 
    if len(sys.argv) > 2: 
     _port = sys.argv[2] 

sockobj = socket(AF_INET, SOCK_STREAM) 
sockobj.connect((_server, _port)) 

for line in message: 
    sockobj.send(line) 
    data = sockobj.recv(1024) 
    print('Client received: {}'.format(data)) 

sockobj.close() 

答えて

1

変更

sockobj.send(line) 

bytesないstr上で動作sendのPython 3.xでは

sockobj.send(line.encode()) 

へ。あるいは私たちは、Python 3.xが正しく(私の意見)str -> bytesを強制終了したと言うことができます。

関連する問題