2:socket簡介

一、不同電腦上的進(jìn)程之間如何通信

在1臺(tái)電腦上可以通過進(jìn)程號(hào)(PID)來唯一標(biāo)識(shí)一個(gè)進(jìn)程,但是在網(wǎng)絡(luò)中這是行不通的。

其實(shí)TCP/IP協(xié)議族已經(jīng)幫我們解決了這個(gè)問題,網(wǎng)絡(luò)層的“ip地址”可以唯一標(biāo)識(shí)網(wǎng)絡(luò)中的主機(jī),而傳輸層的“協(xié)議+端口”可以唯一標(biāo)識(shí)主機(jī)中的應(yīng)用進(jìn)程(進(jìn)程)。

這樣利用ip地址,協(xié)議,端口就可以標(biāo)識(shí)網(wǎng)絡(luò)的進(jìn)程了,網(wǎng)絡(luò)中的進(jìn)程通信就可以利用這個(gè)標(biāo)志與其它進(jìn)程進(jìn)行交互

注意:

所謂進(jìn)程指的是:運(yùn)行的程序以及運(yùn)行時(shí)用到的資源這個(gè)整體稱之為進(jìn)程

所謂進(jìn)程間通信指的是:運(yùn)行的程序之間的數(shù)據(jù)共享

二、什么是socket ?

socket(簡稱 套接字) 是進(jìn)程間通信的一種方式,它與其他進(jìn)程間通信的一個(gè)主要不同是:

它能實(shí)現(xiàn)不同主機(jī)間的進(jì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)建一個(gè) socket,該函數(shù)帶有兩個(gè)參數(shù):

Address Family:可以選擇 AF_INET(用于 Internet 進(jìn)程間通信) 或者 AF_UNIX(用于同一臺(tái)機(jī)器進(jìn)程間通信),實(shí)際工作中常用AF_INET

Type:套接字類型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 協(xié)議)或者 SOCK_DGRAM(數(shù)據(jù)報(bào)套接字,主要用于 UDP 協(xié)議)

3.3、創(chuàng)建一個(gè)tcp socket(tcp套接字)

import socket

# 創(chuàng)建tcp的套接字

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# ...這里是使用套接字的功能(省略)...

# 不用的時(shí)候,關(guān)閉套接字

s.close()

3.4、創(chuàng)建一個(gè)udp socket(udp套接字)

3.5、說明:套接字使用流程 與 文件的使用流程很類似

創(chuàng)建套接字

使用套接字收/發(fā)數(shù)據(jù)

關(guān)閉套接字


作者:IIronMan

鏈接:http://m.itdecent.cn/p/d059aa15d1a0

來源:簡書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容