導讀 | socket簡介,套接字可以看成是兩個網絡應用程序進行通信時,各自通信連接中的一個端點。通信時,其中的一個網絡應用程序將要傳輸的一段信息寫入它所在主機的Socket中,該Socket通過網絡接口卡的傳輸介質將這段信息發送給另一臺主機的Socket中,使這段信息能傳送到其他程序中。因此,兩個應用程序之間的數據傳輸要通過套接字來完成。 |
首要解決的問題是如何唯一標識一個進程,否則通信無從談起!在1臺電腦上可以通過進程號(PID)來唯一標識一個進程,但是在網絡中這是行不通的。
在網絡應用程序設計時,由于TCP/IP的核心內容被封裝在操作系統中,如果應用程序要使用TCP/IP,可以通過系統提供的TCP/IP的編程接口來實現。在Windows環境下,網絡應用程序編程接口稱作Windows Socket。為了支持用戶開發面向應用的通信程序,大部分系統都提供了一組基于TCP或者UDP的應用程序編程接口(API),該接口通常以一組函數的形式出現,也稱為套接字(Socket)。
其實TCP/IP協議族已經幫我們解決了這個問題,網絡層的“ip地址”可以唯一標識網絡中的主機,而傳輸層的“協議+端口”可以唯一標識主機中的應用進程(進程)。
這樣利用
ip地址,協議,端口就可以標識網絡的進程了,網絡中的進程通信就可以利用這個標志與其它進程進行交互
- 所謂
進程
指的是:運行的程序以及運行時用到的資源這個整體稱之為進程(在講解多任務編程時進行詳細講解)- 所謂
進程間通信
指的是:運行的程序之間的數據共享- 后面課程中會詳細說到,像網絡層等知識,不要著急
socket(簡稱
套接字
) 是進程間通信的一種方式,它與其他進程間通信的一個主要不同是:
它能實現不同主機間的進程間通信,我們網絡上各種各樣的服務大多都是基于 Socket 來完成通信的
例如我們每天瀏覽網頁、QQ 聊天、收發 email 等等
在 Python 中 使用socket 模塊的函數 socket 就可以完成:
import socket socket.socket(AddressFamily, Type)
函數 socket.socket 創建一個 socket,該函數帶有兩個參數:
創建一個tcp socket(tcp套接字)
import socket# 創建tcp的套接字s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# ...這里是使用套接字的功能(省略)...# 不用的時候,關閉套接字s.close()
創建一個udp socket(udp套接字)
import socket# 創建udp的套接字s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# ...這里是使用套接字的功能(省略)...# 不用的時候,關閉套接字s.close()
本文原創地址: https://www.linuxprobe.com/socket-jeshao-xuexi.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。