python socket之tcp服務器與客戶端示例
作者:vpoet
日期:夏季
server:
# -- coding: cp936 --
'''
建立一個python server,監聽指定端口,
如果該端口被遠程連接訪問,則獲取遠程連接,然后接收數據,
并且做出相應反饋。
'''
import socketif __name__=="__main__": print "Server is starting" sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('localhost', 8001)) #配置soket,綁定IP地址和端口號 sock.listen(5) #設置最大允許連接數,各連接和server的通信遵循FIFO原則 print "Server is listenting port 8001, with max connection 5" while True: #循環輪詢socket狀態,等待訪問 connection,address = sock.accept() try: connection.settimeout(10) #獲得一個連接,然后開始循環處理這個連接發送的信息 ''' 如果server要同時處理多個連接,則下面的語句塊應該用多線程來處理, 否則server就始終在下面這個while語句塊里被第一個連接所占用, 無法去掃描其他新連接了,但多線程會影響代碼結構,所以記得在連接數大于1時 下面的語句要改為多線程即可。 ''' while True: buf = connection.recv(1024) print "Get value " +buf print "\n\n" if buf=="q": print "exit server\n\n" break except socket.timeout: #如果建立連接后,該連接在設定的時間內無數據發來,則time out print 'time out' print "closing one connection" #當一個連接監聽循環退出后,連接可以關掉 connection.close() </pre>
client:import sys if __name__=="__main__": import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('localhost', 8001)) import time while True: time.sleep(3) flag=raw_input("Please input send flag:") if flag=="q": break sock.send(flag) sock.close()
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!