Python 2ソケットの例を見直す

whois.py

import sys
import socket

s = socket.socket(socket.AF__INET, socket.SOCK__STREAM)
s.connect(("whois.arin.net", 43))
s.send(sys.argv[1]+ "\r\n")

#Python 2.7 send signature
#socket.send(string[, flags])

Python 3でコンパイルすると、次のエラーメッセージが表示されますか?

Traceback (most recent call last):
  File "C:\repos\hc\whois\python\whois.py", line 6, in <module>
    s.send(sys.argv[1]+ "\r\n")
TypeError: 'str' does not support the buffer interface

解決策

Python 3では、ソケットがバイトを受け入れるため、文字列を次のように `encode()`関数でバイトに変換する必要があります:

whois.py

import sys
import socket

s = socket.socket(socket.AF__INET, socket.SOCK__STREAM)
s.connect(("whois.arin.net", 43))

#convert string to bytes
s.send((sys.argv[1]+ "\r\n").encode())

#Python 3.4 send signature
#socket.send(bytes[, flags])


P.S Python 3.4.3

でテスト済み

参考文献

3ソケットはドキュメントを送る]。

https://docs.python.org/2.7/library/socket.html#socket.socket.send

[Python

2ソケットのドキュメントを送信]。リンク://python/python-whois-client-example/[Python Whois client

例]