2:socket簡介

一、不同電腦上的進程之間如何通信

在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)載請注明出處。

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

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

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