Pythonでsocketプログラミング

Pythonでsocketプログラミングをしてみる。
ライブラリリファレンスをお手本に、Echo serverとEcho clientを書いてみる。


まずはEcho server


# Echo server program
import socket

HOST = '' # Symbolic name meaning the local host
PORT = 50007 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while True:
data = conn.recv(1024)
print 'Received -> %s'%(data)
conn.send(data)
if data == '': #空白文字が送られてきたらcloseする。
break
conn.close()

socketをimportしたら、socket→baind→listen→acceptと
コネクション型通信のメソッドに沿って接続を確立する。


次にEcho client


# Echo client program
import socket

HOST = '127.0.0.1' # The remote host
PORT = 50007 # The same port as used by the server

'''
###SiTCP_IP_address###
HOST = '192.168.10.16'
PORT = 24
###SiTCP_end###
'''
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))

while True:
print 'Send message...'
msg = raw_input()
if msg == '': ##空白文字が入力されたらcloseする。
s.close()
break
s.send(msg)
data = s.recv(1024)
print 'Received', repr(data)
s.close()
print 'close'


参考
Python ライブラリリファレンス
17.2 socket -- 低レベルネットワークインターフェース
http://www.python.jp/doc/2.5/lib/module-socket.html