亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python—socket單工、半雙工模式淺析

系統 1716 0

概述:通信數據交換方式分為幾種模式:全雙工、半雙工和單工數據傳輸;

問題:什么是全雙工、半雙工和單工?

解釋: 全雙工(Full Duplex)是通訊傳輸的一個術語。

通信允許數據在兩個方向上同時傳輸,它在能力上相當于兩個單工通信方式的結合。全雙工指可以同時(瞬時)進行信號的雙向傳輸(A→B且B→A)。指A→B的同時B→A,是瞬時同步的,四線制。

單工就是在只允許甲方向乙方傳送信息,而乙方不能向甲方傳送 。

半雙工(Half Duplex)數據傳輸指數據可以在一個信號載體的兩個方向上傳輸,但是不能同時傳輸。例如,在一個局域網上使用具有半雙工傳輸的技術,一個工作站可以在線上發送數據,然后立即在線上接收數據,這些數據來自數據剛剛傳輸的方向。像全雙工傳輸一樣,半雙工包含一個雙向線路,兩線制。

網絡編程:對于python而言,同樣支持udp和tcp協議完成全雙工、半雙工和單工的網絡通信,本篇文章淺析python的udp協議實現單工、半雙工,全雙工后面文章分析;

python在網絡編程方面提供了socket標準庫用以開發實現單工、半雙工的網絡編程;

具體有以下幾個關鍵方法:

socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 創建udp協議的套接字

socket.bind(loc_addres) # 綁定地址和端口,注意一個參數,元祖類型;

socket.sendto(b"發送內容byte類型",(send_ip,send_port)) # sendto方法兩個參數,發送內容和發送目的機器ip地址和端口,機器ip和端口是元祖類型;

socket.recvfrom(1024) # 接受內容,一個參數單次接受字節數大小;

socket.close() # 關閉套接字

單工介紹如下:

先實現發送部分代碼:

            
              import socket


def main():
    """實現簡單的udp協議單工"""

    # 創建套接字
    udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    # 綁定程序端口,如不綁定運行后系統隨機分配
    loc_addres = ("",5566)
    udp_socket.bind(loc_addres)
    while True:
        # 發送數據的ip和端口
        send_ip = input("請輸入目的機器的ip:")
        send_port = int(input("請輸入目的機器的端口:"))
        # 發送內容,不同機器有不同編碼格式,在發送時候需要關注轉碼
        send_data = input("請輸入你需要發送的內容:")
        if send_data == "exit":
            break
        else:
            udp_socket.sendto(send_data.encode("utf-8"),(send_ip,send_port))  # 發送目的內容和目的機器ip和端口,元祖類型
    #關閉套接字
    udp_socket.close()


if __name__ =="__main__":
    main()

            
          

接收部分代碼如下:

            
              import socket


def main():
    """實現簡單的udp協議單工調試工具"""

    # 創建套接字
    udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    # 綁定程序端口,如不綁定運行后系統隨機分配
    loc_addres = ("",7788)
    udp_socket.bind(loc_addres)
    while True:
        # 接收其他機器發送的數據
        udp_data = udp_socket.recvfrom(1024)
        if str(udp_data[1]) == "exit":
            break
        else:
            # 打印接收到的內容
            print("%s,%s" %(str(udp_data[1]),udp_data[0].decode("gbk")))
    #關閉套接字
    udp_socket.close()


if __name__ =="__main__":
    main()

            
          

調試效果如下:

python—socket單工、半雙工模式淺析_第1張圖片

半雙工模式如下:

發送部分實現代碼:

            
              import socket



def send_msg(udp_socket):
    """發送數據部分"""
    # 發送數據的ip和端口
    send_ip = input("請輸入目的機器的ip:")
    send_port = int(input("請輸入目的機器的端口:"))
    # 發送內容,不同機器有不同編碼格式,在發送時候需要關注轉碼
    send_data = input("請輸入你需要發送的內容:")
    # 發送數據
    udp_socket.sendto(send_data.encode("utf-8"),(send_ip,send_port))  # 發送目的內容和目的機器ip和端口,元祖類型


def recv_msg(udp_socket):
    """接收數據部分"""
    udp_data = udp_socket.recvfrom(1024)  # 接收目的機器的發送內容
    print("%s,%s" %(str(udp_data[1]),udp_data[0].decode("gbk")))


def main():
    """實現簡單的udp協議的聊天工具"""

    # 創建套接字
    udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    # 綁定程序端口,如不綁定運行后系統隨機分配
    loc_addres = ("",7799)
    udp_socket.bind(loc_addres)
    while True:
        print("-------*****聊天工具v-0.1-----------")
        print("輸入0發送數據")
        print("輸入1接受數據")
        print("輸入2退出")
        req = input("請輸入你需要的功能:")
        if req == "0":
            send_msg(udp_socket)
        elif req == "1":
            recv_msg(udp_socket)
        elif req == "2":
            break
        else:
            print("輸入有誤請重新輸入:")
    #關閉套接字
    udp_socket.close()


if __name__ =="__main__":
    main()
            
          

如果在本機調試修改綁定地址端口即可:

            
              # 綁定程序端口,如不綁定運行后系統隨機分配
loc_addres = ("",5566)
udp_socket.bind(loc_addres)
            
          

調試結果如下:

python—socket單工、半雙工模式淺析_第2張圖片

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天干天天操天天透 | 免费成人高清视频 | 久久社区 | 在线观看免费亚洲 | 欧美αv在线| 亚洲无线码一区在线观看 | 伊人影院中文字幕 | 国产在播放一区 | 久久99精品一区二区三区 | 香蕉视频在线免费播放 | 欧美特黄级乱色毛片 | 婷婷网五月天天综合天天爱 | 久久精品视频3 | 日日夜夜天天干 | 男人边吃奶边爱边做视频日韩 | 一本久道久久综合狠狠爱 | 天啪天干在线视频 | 久久综合精品国产一区二区三区 | 四虎成人国产精品视频 | 成人毛片18女人毛片免费96 | 澳门一级特黄录像免费播黄 | 午夜在线观看cao | 亚洲美女性视频 | 狠狠色丁香婷婷综合久久片 | 四虎成人影视 | 亚洲一区二区三区在线播放 | 亚洲欧美日韩中文字幕在线一 | 午夜日韩在线 | 蜜桃日本一道无卡不码高清 | 久久最新免费视频 | 天天干天天操天天拍 | 99久久精品国产一区二区 | 色偷偷成人网免费视频男人的天堂 | 九九影院最新理论片 | 香蕉视频免费在线看 | 激情影院在线观看 | 亚洲精品久久久久中文字幕一区 | 14一15sexvideo日本 | 曰韩一级片 | 顶级欧美色妇xxxxbbbb | 香蕉视频日本 |