TypeError: 'str'はバッファインターフェイスをサポートしていません
Typeerror Strdoes Not Support Buffer Interface
Python 3のSOCKETのsend()メソッドは、バイナリデータ(バイト)のみを送信し、文字列(str)形式でデータを送信することはできません。
... str1 = 'arbitrary string' s.send(str1) ...
str1はstr型であるため、実行時にTypeErrorが発生します。
TypeError: 'str' does not support the buffer interface
Encode()はstrをバイトに変換し、decode()はバイトをstrに変換します。
この時点で、strをバイトタイプに変換する必要があります。
... str1 = 'arbitrary string' s.send(str1.encode()) ...
この時点で、正常に実行され、データを正常に送信できます。
(追記:通常の文字列を出力するのに便利な、recv()側でbytes()を使用してバイトをstrに変換することを忘れないでください〜)