標籤:recv 檔案系統 通訊端 檔案的 int soc 封裝 code 檔案類型
用戶端/伺服器架構,即C/S架構:
1.硬體C/S架構(印表機)
2.軟體C/S架構(web服務)
B/S架構屬於C/S架構的一種
socket就是為了C/S架構的開發,socket是應用程式層與TCP/IP協議族通訊的中間軟體抽象層,它是一組介面。他把複雜的TCP/IP協議族隱藏在socket介面後面。讓socket去組織資料,以符合指定協議的標準。所以我們無需深入理解TCP/UDP/IP協議,socket已經為我們封裝好了,我們只去遵循socket的規定去編程,寫出的程式自然就是遵循TCP/UDP標準的。
IP與port的綁定標識了互連網中獨一無二的一個應用程式。而程式的pid是同一台機器上不同進程或線程的標識。
一開始,通訊端(socket)被設計在同一台主機上多個應用程式之間的通訊,這也被稱為進程間通訊,或IPC。通訊端有兩種(或者成為有兩個種族),分別是基於檔案型和基於網路型。
基於檔案類型的通訊端家族:通訊端家族的名字:AF_UNIX
unix一切皆檔案,基於檔案的通訊端調用的是底層的檔案系統來取資料,兩個通訊端進程運行在同一台機器,可以通過訪問同一個檔案系統間接完成通訊。
基於網路類型的通訊端家族:通訊端家族的名字:AF_INET
AF_INET6被用於ipv6,AF_INET是使用最廣泛的一個,用來網路編程。
import socketphone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.bind((‘127.0.0.1‘,8000))phone.listen(5)print("等待用戶端發來訊息:\n")conn,addr=phone.accept() #返回元組rec_msg=conn.recv(1024) #1024代表接收多少位元組資訊print(‘用戶端IP和port:‘,addr) #用戶端IP和port資訊print(‘用戶端發來的訊息是:‘,rec_msg.upper())send_msg=‘I AM SERVER‘conn.send(send_msg.encode(‘utf-8‘))conn.close() #關閉串連phone.close() #關閉socketsocket服務端
import socketphone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.connect((‘127.0.0.1‘,8000)) #建立串連phone.send(‘I AM CLIENT‘.encode(‘utf-8‘)) #發送訊息data=phone.recv(1024)print(‘收到服務端返回的資訊‘,data)
socket用戶端
python-socket編程