婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python實現socket簡單通信的示例代碼

python實現socket簡單通信的示例代碼

熱門標簽:電話外呼系統招商代理 佛山通用400電話申請 電話機器人貸款詐騙 廣東旅游地圖標注 蘇州人工外呼系統軟件 淮安呼叫中心外呼系統如何 京華圖書館地圖標注 看懂地圖標注方法 打印谷歌地圖標注

首先先來簡單介紹下socket:

(具體更詳細介紹的可以在網上找找,都講得非常詳細),這里主要是我自己的一些理解。

socket是在應用層與傳輸層之間的一個抽象層,它的本質是編程接口,通過socket,才能實現TCP/IP協議。
它就是一個底層套件,用來處理最底層消息的接受和發送。
socket翻譯為套接字,可以把TCP/IP復雜的操作抽象為簡單的幾個接口來供應用層調用來實現進程在網絡中的通信。socket起源于Unix,而Unix的基本要素之一就是“一切都為文件”,即可以通過打開——讀寫——關閉的模式來操作,通過這一點我們就可以來實現socket的簡單編寫

這里再貼上關于socket工作原理的具體圖像:


大家若有看不懂的,也先別著急,看完下面的再來結合這張圖理解會有更深的理解

其實在本機上,我們可以通過PID來標識唯一一個進程,但如果網絡中的兩個進程要進行通訊的話,PID的沖突就很大了,這個時候IP協議的ip地址就可以來標識主機,而TCP的協議與端口號可以標識主機的一個進程,所以就可以通過ip地址+協議+端口號來標識網絡中的某個進程

大概了解的差不多了,我就來說說python里的socket庫
先簡單介紹一些socket庫里的參數:
首先是地址蔟:

socket.AF_INET 表示的是IPv4(這也是socket里默認的)
socket.AF_INET6 表示的是IPv6
socket.AF_UNIX 這個主要用于單一的UNIX進程間的通信

然后是TYpe:

socket.SOCK_STREAM //流式socketTCP協議(默認的),用來保證數據順序以及可靠性
socket.SOCK_DGRAM //這是報式socket UDP協議,保證數據接受的順序,不可靠的連接
socket.SOCK_RAW //這是原始套接字,允許對底層協議(TCP/IP)直接訪問

這里的流式與數據報式其實就是面向的區別:
流式是面向連接的TCP服務應用,而數據報式就是非面向連接的UDP服務應用,也就是無連接的socket

接著是一些方法的使用:

1:sk=socket.socket() :括號里面包含兩個參數,一個參數默認是ip地址蔟的socket.AF_INET,也就是IPv4;還有一個默認是傳輸TCP協議,也就是socket.SOCK_STREAM
2:sk.bind(()) :最里面的括號里包含兩個參數,分別是客戶端的ip地址與端口號
3:sk.listen(n): 里面的n表示阻塞連接n個進程,也就是最大等待數為n個,當連接上某個進程后,其他的都不會連接上,會處于等待狀態,只有當斷開與這個進程的連接,其他的進程才會依次連上
4a,b=sk.accept():返回的是一個元組,元組的第一個參數是連接的信息,第二個參數是客戶端的ip地址與端口號
5a.recv(1024): recv()表示接受信息,里面的1024表示最多接受的字節數,如果有多余的字符就下次再進行傳輸

大致的參數講解完了,現在來開始服務端的腳本編寫:

# -*-coding: utf-8 -*-
#引入socket庫
import socket
#這是進行定義一個ip協議版本AF_INET(IPv4),定義一個傳輸TCP協議,SOCK_STREAM
sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#定義ip地址與端口號,ip地址就是服務端的ip地址,端口隨便定義,但要與客戶端腳本一致
ip_port=('127.0.0.1',8000)
#綁定一個端口
sk.bind(ip_port)
#監聽一個端口,這里的數字3是一個常量,表示阻塞3個連接,也就是最大等待數為3
sk.listen(3)
#接受客戶端的數據,并返回兩個參數,a為連接信息,b為客戶端的ip地址與端口號
a,b=sk.accept()
print(a)
while True:
    data=a.recv(1024)#客戶端發送的數據存儲在recv里,1024指最大接受數據的量
    print(data.decode('utf-8'))
    message=input("you can say:")
    a.send(message.encode('utf-8'))
    if message==('bye'):
        break

接著來編寫客戶端的腳本:

# -*- coding:utf-8 -*-
#導入socket庫
import socket
#定義一個ip協議版本AF_INET,為IPv4;同時也定義一個傳輸協議(TCP)SOCK_STREAM
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#定義IP地址與端口號
ip_port=('127.0.0.1',8000)
#進行連接服務器
client.connect(ip_port)
while True:
    message=input('You can say:')
    client.send(message.encode('utf-8'))#將發送的數據進行編碼
    a=client.recv(1024)#接受服務端的信息,最大數據為1k
    print(a.decode('utf-8'))
    if a.decode('utf-8')=='bye':
        break

這是運行的結果


左邊窗口是服務端代碼,右邊窗口是客戶端代碼,當在服務端輸入bye過后,整個對話將關閉

以上就是socket的簡單通訊了

最后再講講UDP的專用代碼(UDP與TCP的代碼大致相同

sendto():這個函數用于在使用UDP時 發送數據
recvform():UDP專用,用于接受數據,返回數據遠端的IP地址和端口
closc():關閉socket

大家若有興趣可以自己去試試UDP的腳本實現,這里就不做具體示范啦

到此這篇關于python實現socket簡單通信的示例代碼的文章就介紹到這了,更多相關python socket通信內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python socket 套接字實現通信詳解
  • python粘包問題及socket套接字編程詳解
  • 詳解python3中socket套接字的編碼問題解決
  • python socket網絡編程步驟詳解(socket套接字使用)
  • Python基礎之Socket通信原理
  • python和websocket構建實時日志跟蹤器的步驟
  • 用Python進行websocket接口測試
  • python基礎之Socket套接字詳解

標簽:衡水 湖州 駐馬店 中山 江蘇 呼和浩特 畢節 股票

巨人網絡通訊聲明:本文標題《python實現socket簡單通信的示例代碼》,本文關鍵詞  python,實現,socket,簡單,通信,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python實現socket簡單通信的示例代碼》相關的同類信息!
  • 本頁收集關于python實現socket簡單通信的示例代碼的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 句容市| 淄博市| 九龙城区| 余江县| 岐山县| 涞水县| 长葛市| 郁南县| 靖边县| 霍邱县| 岑巩县| 长兴县| 海兴县| 北海市| 潮安县| 高雄市| 塘沽区| 奈曼旗| 永顺县| 莫力| 白朗县| 定南县| 外汇| 聂荣县| 东兴市| 宣威市| 新和县| 靖安县| 调兵山市| 清流县| 沙雅县| 蒙城县| 原平市| 潢川县| 吉水县| 鄂伦春自治旗| 黄山市| 寿光市| 从江县| 红河县| 新余市|