欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python制作簡易聊天器,搭建UDP網(wǎng)絡(luò)通信模型

 更新時間:2022年01月25日 15:40:23   作者:松鼠愛吃餅干?  
這篇文章主要介紹了Python制作簡易聊天器,搭建UDP網(wǎng)絡(luò)通信模型,用UDP建立網(wǎng)絡(luò)模型來完成一個簡單的聊天器,感興趣的小伙伴可以參考一下,希望對你有所幫助

前言:

互聯(lián)網(wǎng)的本質(zhì)是什么?其實就是信息的交換。就比如我們常用的QQ、微信等。那么如何將自己的信息發(fā)送到其他人的電腦上呢?

那就需要借助網(wǎng)絡(luò)模型來完成這樣的事情了。今天就帶領(lǐng)大家使用UDP網(wǎng)絡(luò)模型來完成一個簡單的聊天器

分享內(nèi)容:

  • python中的套接字實現(xiàn)
  • 如何與Ubuntu建立通信
  • 發(fā)送/接收消息

環(huán)境:

  • windows
  • Ubuntu
  • python3
  • pycharm

1.導入模塊

import socket

socket是套接字,鏈接電腦并且接收/發(fā)送消息的一個對象

socket有兩種類型:udptcp

  • udp比較簡單 不安全 丟包的情況 速度快
  • tcp比較復雜的網(wǎng)絡(luò)模型 安全 速度慢

2.創(chuàng)建一個套接字對象

def main():
? ? udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

udp需要借助網(wǎng)絡(luò):IP協(xié)議
IP協(xié)議分為兩種:IPv4和IPv6
PC電腦采取的是IPv4,IPv6一般是移動端使用:手機

3.發(fā)送數(shù)據(jù)到ubuntu系統(tǒng)中

udp_socket.sendto(b'hello python', ('192.168.3.40', 8080))
udp_socket.close()

4.發(fā)送任意數(shù)據(jù)給網(wǎng)絡(luò)條數(shù)助手

def main():
? ? udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
? ? send_data = input('請輸入任意字符:')
? ? udp_socket.sendto(send_data.encode('utf-8'), ('192.168.3.40', 8080))
? ? udp_socket.close()

5.循環(huán)發(fā)送數(shù)據(jù)

def main():
? ? # 創(chuàng)建套接字
? ? udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
? ? # 循環(huán)發(fā)送
? ? while True:
? ? ? ? send_data = input('請輸入你想要發(fā)送的數(shù)據(jù):')
? ? ? ? udp_socket.sendto(send_data.encode('utf-8'), ('192.168.3.40', 8080))
? ? ? ? if send_data == "exit":
? ? ? ? ? ? break

? ? udp_socket.close()

6.循環(huán)接受數(shù)據(jù)

綁定本機信息 告訴ubuntu我的當前地址以及端口

def main():
? ? udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
? ? localhost_addr = ('', 6666)
? ? udp_socket.bind(localhost_addr)

循環(huán)接收

while True:
? ? recv_data = udp_socket.recvfrom(1024)
? ? # 元組解包
? ? recv_msg, recv_addr = recv_data
? ? print(recv_msg.decode('utf-8'), recv_addr)

將相關(guān)的功能抽離出來做成一個函數(shù)

發(fā)送消息:

def send_msg(udp_socket):
? ? msg = input('請輸入你想要發(fā)送的消息:')
? ? udp_socket.sendto(msg.encode('utf-8'), ('192.168.3.40', 8080))

接收消息:

def recv_msg(udp_socket):
? ? # 接收
? ? msg = udp_socket.recvfrom(1024)
? ? # 解碼
? ? recv_msg = msg[0].decode('utf-8')
? ? print(recv_msg)

發(fā)送 / 接收 功能:

def main():
? ? udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
? ? udp_socket.bind(('', 6666))

? ? while True:
? ? ? ? op_num = input('請輸入要操作的功能序號 [1.發(fā)送消息 2.接收消息]:' )
? ? ? ? # 根據(jù)用戶輸入的數(shù)字去調(diào)用相關(guān)的功能
? ? ? ? if op_num == "1":
? ? ? ? ? ? send_msg(udp_socket)
? ? ? ? elif op_num == "2":
? ? ? ? ? ? recv_msg(udp_socket)
? ? ? ? else:
? ? ? ? ? ? print('輸入有誤, 請重新輸入...')

7.啟動

if __name__ == '__main__':
? ? main()

最后運行代碼

發(fā)送消息:

接收消息:

到此這篇關(guān)于Python制作簡易聊天器,搭建UDP網(wǎng)絡(luò)通信模型的文章就介紹到這了,更多相關(guān)Python制作簡易聊天器 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中如何快速解析JSON對象數(shù)組

    Python中如何快速解析JSON對象數(shù)組

    由于瀏覽器可以迅速地解析JSON對象,它們有助于在客戶端和服務(wù)器之間傳輸數(shù)據(jù),本文將描述如何使用Python的JSON模塊來傳輸和接收JSON數(shù)據(jù)
    2023-09-09
  • 淺析pandas 數(shù)據(jù)結(jié)構(gòu)中的DataFrame

    淺析pandas 數(shù)據(jù)結(jié)構(gòu)中的DataFrame

    DataFrame 類型類似于數(shù)據(jù)庫表結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu),這篇文章主要介紹了pandas 數(shù)據(jù)結(jié)構(gòu)之DataFrame,需要的朋友可以參考下
    2019-10-10
  • Python控制鼠標鍵盤代碼實例

    Python控制鼠標鍵盤代碼實例

    這篇文章主要介紹了Python控制鼠標鍵盤代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • python如何爬取網(wǎng)頁中的文字

    python如何爬取網(wǎng)頁中的文字

    在本篇文章里小編給大家整理的是關(guān)于python如何爬取網(wǎng)頁中的文字的相關(guān)實例內(nèi)容,需要的朋友們可以學習下。
    2020-07-07
  • 已安裝tensorflow-gpu,但keras無法使用GPU加速的解決

    已安裝tensorflow-gpu,但keras無法使用GPU加速的解決

    今天小編就為大家分享一篇已安裝tensorflow-gpu,但keras無法使用GPU加速的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python進程間的通信一起來了解下

    Python進程間的通信一起來了解下

    這篇文章主要為大家詳細介紹了Python進程間通信,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python struct模塊解析

    Python struct模塊解析

    我們知道python只定義了6種數(shù)據(jù)類型,字符串,整數(shù),浮點數(shù),列表,元組,字典。但是C語言中有些字節(jié)型的變量,在python中該如何實現(xiàn)呢?這點頗為重要,特別是要在網(wǎng)絡(luò)上進行數(shù)據(jù)傳輸?shù)脑挕?/div> 2014-06-06
  • Python3利用print輸出帶顏色的彩色字體示例代碼

    Python3利用print輸出帶顏色的彩色字體示例代碼

    用Python寫命令行程序的時候,單一的輸出顏色太單調(diào)了,所以下面這篇文章主要給大家介紹了關(guān)于Python3利用print輸出帶顏色的彩色字體的相關(guān)資料,需要的朋友可以參考下
    2019-04-04
  • python用opencv完成圖像分割并進行目標物的提取

    python用opencv完成圖像分割并進行目標物的提取

    這篇文章主要介紹了python用opencv完成圖像分割并進行目標物的提取,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Python實現(xiàn)PS濾鏡特效Marble Filter玻璃條紋扭曲效果示例

    Python實現(xiàn)PS濾鏡特效Marble Filter玻璃條紋扭曲效果示例

    這篇文章主要介紹了Python實現(xiàn)PS濾鏡特效Marble Filter玻璃條紋扭曲效果,涉及Python基于skimage庫實現(xiàn)圖形條紋扭曲效果的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01

最新評論