一、不同電腦上的進程之間如何通信
在1臺電腦上可以通過進程號(PID)來唯一標識一個進程,但是在網(wǎng)絡(luò)中這是行不通的。
其實TCP/IP協(xié)議族已經(jīng)幫我們解決了這個問題,網(wǎng)絡(luò)層的“ip地址”可以唯一標識網(wǎng)絡(luò)中的主機,而傳輸層的“協(xié)議+端口”可以唯一標識主機中的應(yīng)用進程(進程)。
這樣利用ip地址,協(xié)議,端口就可以標識網(wǎng)絡(luò)的進程了,網(wǎng)絡(luò)中的進程通信就可以利用這個標志與其它進程進行交互
注意:
所謂進程指的是:運行的程序以及運行時用到的資源這個整體稱之為進程
所謂進程間通信指的是:運行的程序之間的數(shù)據(jù)共享
二、什么是socket ?
socket(簡稱 套接字) 是進程間通信的一種方式,它與其他進程間通信的一個主要不同是:
它能實現(xiàn)不同主機間的進程間通信,我們網(wǎng)絡(luò)上各種各樣的服務(wù)大多都是基于 Socket 來完成通信的
例如我們每天瀏覽網(wǎng)頁、QQ 聊天、收發(fā) email 等等
三、創(chuàng)建socket
3.1、在 Python 中 使用socket 模塊的函數(shù) socket 就可以完成:
import socket
socket.socket(AddressFamily, Type)
3.2、說明:函數(shù) socket.socket 創(chuàng)建一個 socket,該函數(shù)帶有兩個參數(shù):
Address Family:可以選擇 AF_INET(用于 Internet 進程間通信) 或者 AF_UNIX(用于同一臺機器進程間通信),實際工作中常用AF_INET
Type:套接字類型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 協(xié)議)或者 SOCK_DGRAM(數(shù)據(jù)報套接字,主要用于 UDP 協(xié)議)
3.3、創(chuàng)建一個tcp socket(tcp套接字)
import socket
# 創(chuàng)建tcp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# ...這里是使用套接字的功能(省略)...
# 不用的時候,關(guān)閉套接字
s.close()
3.4、創(chuàng)建一個udp socket(udp套接字)

3.5、說明:套接字使用流程 與 文件的使用流程很類似
創(chuàng)建套接字
使用套接字收/發(fā)數(shù)據(jù)
關(guān)閉套接字
作者:IIronMan
鏈接:http://www.itdecent.cn/p/d059aa15d1a0
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。