ちょっと Python でソケット通信をやろうと思ったのですが、思った通りに出来ませんでした。やろうと思ったのは次のようなコードでした。
sendall() メソッドには str を渡すとあったので次のようにして実行したのですが、エラーになってしまいました。
import socket my_socket = socket.socket() my_socket.connect( ( "127.0.0.1", 8080 ) ) my_socket.sendall( "testdata" ) my_socket.close() |
詳しい同僚に聞いたところ、Python 3 系では文字列の前に b をつけてバイト列として送る必要があるとのことでした。もし、変数に代入したのであれば encode メソッドを使って送ります。(以下では UTF-8 でエンコードしています)
import socket my_socket = socket.socket() my_socket.connect( ( "127.0.0.1", 8080 ) ) # 文字列リテラルから my_socket.sendall( b"testdata" ) # 変数から data = "testdata" my_socket.sendall( data.encode( "utf-8" ) ) my_socket.close() |