本文實例講述了Python Socket實現簡單TCP Server/client功能。分享給大家供大家參考,具體如下:
網絡上關于socket的介紹文章數不勝數。自己記錄下學習的點點滴滴。以供將來復習學習使用。
socket中文的翻譯是套接字,總感覺詞不達意。簡單的理解就是ip+port形成的一個管理單元。也是程序中應用程序調用的接口。
在這里我們先介紹如何啟動tcp 的server。
tcp連接中server部分,啟動一個ip和port口,在這個port口監聽,當收到client發來的請求,用一個新的端口port2同client建立連接。
socket啟動監聽的過程就是:
創建socket
bind端口
開始監聽
建立連接+繼續監聽
代碼:
'''This is a testing programthe program is used to start server'''import socketimport sysdef start_tcp_server(ip, port): #create socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_address = (ip, port) #bind port print 'starting listen on ip %s, port %s'%server_address sock.bind(server_address) #starting listening, allow only one connection try: sock.listen(1) except socket.error, e: print "fail to listen on port %s"%e sys.exit(1) while True: print "waiting for connection" client,addr = sock.accept() print 'having a connection' client.close()if __name__ == '__main__': start_tcp_server('10.20.0.20', 12345)在這里有一個常用技巧,在start_tcp_server中,我們最常用到的是本機的ip,為了程序的通用性,最好使用調用函數的方式獲取ip地址。
用到兩個函數socket.gethostname與socket.gethostbyname('name')
ip = socket.gethostbyname(socket.gethostname())
但是問題是一般情況下得到的ip地址為127.0.0.1。
對于使用配置或dhcp獲取的ip,可參考本站相關文章。
socket client 發起連接
流程為:
創建接口
發起連接
創建接口參數同socket server相同
發起連接的函數為socket.connect(ip,port)
這個地方的ip與port為socket server端的ip和監聽port。
代碼示例:
# -*- coding: utf-8 -*-'''This is a testing programthe program is used to test socket client'''import socketimport sysdef start_tcp_client(ip, port): #server port and ip server_ip = ip servr_port = port tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: tcp_client.connect((server_ip, server_port)) except socket.error: print 'fail to setup socket connection' tcp_client.close()
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答