python-socket編程
阿新 • • 發佈:2018-06-03
通過 返回 hide 運行 取數據 PE 進程 AS 客戶
客戶端/服務器架構,即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 socket phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) phone.bind((‘127.0.0.1‘,8000)) phone.listen(5) print("等待客戶端發來消息:\nsocket服務端") 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() #關閉socket
import socket phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) phone.connect((socket客戶端‘127.0.0.1‘,8000)) #建立連接 phone.send(‘I AM CLIENT‘.encode(‘utf-8‘)) #發送消息 data=phone.recv(1024) print(‘收到服務端返回的信息‘,data)
python-socket編程