版本:Python 2.7.3
開發工具:IDLE (Python GUI)和Eclipse Pydev
服務器端代碼:
# -*- coding: cp936 -*-
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#初始化socket
sock.bind(("127.0.0.1", 8001))#綁定本機地址,8001端口
sock.listen(5)#等待客戶連接
while True:
print "waiting client connection..."
connection,address = sock.accept()#接收客戶連接請求
print "a client have connected..."
while True:
try:
connection.settimeout(5) #設置超時時間
buf = connection.recv(1024) #接收數據
if buf == "1":
connection.send("you have send me 1!welcome to server!")
elif buf=="2":
connection.send("you have send me 2!I have recv!")
elif buf=="3":
connection.send("close the connection!")
break
else:
connection.send("unknow command!")
except socket.timeout:
print "time out"
connection.close()
print "a client exit..."
客戶端代碼:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("127.0.0.1", 8001))
import time
time.sleep(2)
while True:
data=raw_input("input command:");
sock.send(data)
print sock.recv(1024)
if data=="3":
break
sock.close()
實驗過程:
在Eclipse編程環境下,上述代碼運行沒有任何的問題。但是在IDLE中,首次運行‘Run Model’時也能正常運行。運行結果如下:
但是,當服務器程序再次運行時,會出現如下錯誤:
此時,是因為sock綁定失敗,原因是因為第一次運行的窗口進程沒有關閉!在任務管理器中,找到進程pythonw.exe關閉,然後再次運行正常!
注:IDLE代碼整理的快捷鍵:和matlab很像,選中一段代碼,Ctrl+[ 向左邊縮進 Ctrl+] 向右邊縮進。Python語法是強制縮進的
源代碼下載地址:
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2012年資料/12月/26日/Python網絡編程小例子【附源代碼】
未經允許不得用於商業目的