1. 程式人生 > >python-socket編程

python-socket編程

通過 返回 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("等待客戶端發來消息:\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() #關閉socket
socket服務端 技術分享圖片
import socket
phone=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編程