溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python基礎學習-socket簡介

發布時間:2020-08-04 19:17:32 來源:ITPUB博客 閱讀:171 作者:大雄45 欄目:編程語言
導讀 socket簡介,套接字可以看成是兩個網絡應用程序進行通信時,各自通信連接中的一個端點。通信時,其中的一個網絡應用程序將要傳輸的一段信息寫入它所在主機的Socket中,該Socket通過網絡接口卡的傳輸介質將這段信息發送給另一臺主機的Socket中,使這段信息能傳送到其他程序中。因此,兩個應用程序之間的數據傳輸要通過套接字來完成。
1. 不同電腦上的進程之間如何通信

首要解決的問題是如何唯一標識一個進程,否則通信無從談起!在1臺電腦上可以通過進程號(PID)來唯一標識一個進程,但是在網絡中這是行不通的。
在網絡應用程序設計時,由于TCP/IP的核心內容被封裝在操作系統中,如果應用程序要使用TCP/IP,可以通過系統提供的TCP/IP的編程接口來實現。在Windows環境下,網絡應用程序編程接口稱作Windows Socket。為了支持用戶開發面向應用的通信程序,大部分系統都提供了一組基于TCP或者UDP的應用程序編程接口(API),該接口通常以一組函數的形式出現,也稱為套接字(Socket)。
其實TCP/IP協議族已經幫我們解決了這個問題,網絡層的“ip地址”可以唯一標識網絡中的主機,而傳輸層的“協議+端口”可以唯一標識主機中的應用進程(進程)。
這樣利用 ip地址,協議,端口就可以標識網絡的進程了,網絡中的進程通信就可以利用這個標志與其它進程進行交互

注意:
  • 所謂 進程指的是:運行的程序以及運行時用到的資源這個整體稱之為進程(在講解多任務編程時進行詳細講解)
  • 所謂 進程間通信指的是:運行的程序之間的數據共享
  • 后面課程中會詳細說到,像網絡層等知識,不要著急
2. 什么是socket

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

它能實現不同主機間的進程間通信,我們網絡上各種各樣的服務大多都是基于 Socket 來完成通信的

例如我們每天瀏覽網頁、QQ 聊天、收發 email 等等

python基礎學習-socket簡介

3.  創建socket

在 Python 中 使用socket 模塊的函數 socket 就可以完成:

import socket
socket.socket(AddressFamily, Type)
說明:

函數 socket.socket 創建一個 socket,該函數帶有兩個參數:

  • Address Family:可以選擇 AF_INET(用于 Internet 進程間通信) 或者 AF_UNIX(用于同一臺機器進程間通信),實際工作中常用AF_INET
  • Type:套接字類型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 協議)或者 SOCK_DGRAM(數據報套接字,主要用于 UDP 協議)

創建一個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()
說明
  • 套接字使用流程 與 文件的使用流程很類似
    1. 創建套接字
    2. 使用套接字收/發數據
    3. 關閉套接字

本文原創地址: https://www.linuxprobe.com/socket-jeshao-xuexi.html

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女