最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ì)是什么?其實(shí)就是信息的交換。就比如我們常用的QQ、微信等。那么如何將自己的信息發(fā)送到其他人的電腦上呢?

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

分享內(nèi)容:

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

環(huán)境:

  • windows
  • Ubuntu
  • python3
  • pycharm

1.導(dǎo)入模塊

import socket

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

socket有兩種類型:udptcp

  • udp比較簡單 不安全 丟包的情況 速度快
  • tcp比較復(fù)雜的網(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一般是移動端使用:手機(jī)

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ù)

綁定本機(jī)信息 告訴ubuntu我的當(dāng)前地址以及端口

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()

最后運(yùn)行代碼

發(fā)送消息:

接收消息:

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

相關(guān)文章

  • Python中存取文件的4種不同操作

    Python中存取文件的4種不同操作

    這篇文章主要給大家介紹了關(guān)于Python中存取文件的4種不同操作的相關(guān)資料,分別包括Python內(nèi)置方法、numpy模塊方法、os模塊方法以及csv模塊方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-07-07
  • 幾行Python代碼爬取3000+上市公司的信息

    幾行Python代碼爬取3000+上市公司的信息

    今天小編就為大家分享一篇關(guān)于幾行Python代碼爬取3000+上市公司的信息,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • webdriver.Chrome()沒反應(yīng)解決詳細(xì)圖文教程

    webdriver.Chrome()沒反應(yīng)解決詳細(xì)圖文教程

    這篇文章主要給大家介紹了關(guān)于webdriver.Chrome()沒反應(yīng)的解決辦法,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-03-03
  • Python中的 No Module named ***問題及解決

    Python中的 No Module named ***問題及解決

    這篇文章主要介紹了Python中的 No Module named ***問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 一個入門級python爬蟲教程詳解

    一個入門級python爬蟲教程詳解

    這篇文章主要介紹了一個入門級python爬蟲教程詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • PyTorch學(xué)習(xí)之軟件準(zhǔn)備與基本操作總結(jié)

    PyTorch學(xué)習(xí)之軟件準(zhǔn)備與基本操作總結(jié)

    這篇文章主要介紹了PyTorch學(xué)習(xí)之軟件準(zhǔn)備與基本操作總結(jié),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Python編程中實(shí)現(xiàn)迭代器的一些技巧小結(jié)

    Python編程中實(shí)現(xiàn)迭代器的一些技巧小結(jié)

    只談迭代器的話在Python中只是一個泛指的概念,具體的可以用yield、生成器表達(dá)式、iter等多種方式來構(gòu)建,這里我們整理了Python編程中實(shí)現(xiàn)迭代器的一些技巧小結(jié):
    2016-06-06
  • Python 實(shí)現(xiàn)簡單的電話本功能

    Python 實(shí)現(xiàn)簡單的電話本功能

    這篇文章主要介紹了Python 實(shí)現(xiàn)簡單的電話本功能的相關(guān)資料,包括添加聯(lián)系人信息,查找姓名顯示聯(lián)系人,存儲聯(lián)系人到 TXT 文檔等內(nèi)容,十分的細(xì)致,有需要的小伙伴可以參考下
    2015-08-08
  • python連接MySQL數(shù)據(jù)庫實(shí)例分析

    python連接MySQL數(shù)據(jù)庫實(shí)例分析

    這篇文章主要介紹了python連接MySQL數(shù)據(jù)庫,實(shí)例分析了Python操作MySQL的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • python?argparse模塊傳參用法實(shí)例

    python?argparse模塊傳參用法實(shí)例

    這篇文章主要為大家介紹了python?argparse模塊傳參用法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評論

荆门市| 花莲市| 兴安县| 随州市| 岱山县| 潞西市| 辽宁省| 荣成市| 电白县| 博罗县| 湾仔区| 霍山县| 福鼎市| 宜昌市| 上林县| 兴文县| 望谟县| 同仁县| 庆安县| 五莲县| 绥棱县| 扎兰屯市| 通渭县| 焉耆| 濉溪县| 通化市| 恩施市| 南汇区| 托克逊县| 塔城市| 怀集县| 齐齐哈尔市| 石嘴山市| 昭觉县| 绩溪县| 玉龙| 巴塘县| 甘德县| 界首市| 东丰县| 贵阳市|