0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

UDP簡(jiǎn)易聊天程序搭建方案

馬哥Linux運(yùn)維 ? 來源:51cto ? 2024-01-10 18:27 ? 次閱讀

網(wǎng)絡(luò)編程Python強(qiáng)大功能之一,而搭建一個(gè)使用UDP協(xié)議的聊天程序是理解網(wǎng)絡(luò)編程基礎(chǔ)概念的絕佳例子。在本教程中,我們將使用Python的socket庫來創(chuàng)建一個(gè)簡(jiǎn)單的UDP聊天程序,允許兩個(gè)用戶在同一網(wǎng)絡(luò)上互發(fā)消息。

UDP協(xié)議簡(jiǎn)介

UDP(用戶數(shù)據(jù)報(bào)協(xié)議)是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的傳輸層協(xié)議。與TCP不同,UDP不保證數(shù)據(jù)包的順序或可靠性,因此通常用于需要快速傳輸如視頻流或在線游戲的場(chǎng)合。這也讓UDP成為實(shí)現(xiàn)簡(jiǎn)易聊天程序的理想選擇,因?yàn)樗妮p量級(jí)使得我們可以專注于程序邏輯而不是數(shù)據(jù)傳輸?shù)膹?fù)雜性。

環(huán)境準(zhǔn)備

在開始之前,請(qǐng)確保你的環(huán)境中已安裝Python 3.x。無需安裝其他外部庫,因?yàn)閟ocket庫是Python的標(biāo)準(zhǔn)庫。

創(chuàng)建UDP服務(wù)器

首先,我們需要?jiǎng)?chuàng)建一個(gè)UDP服務(wù)器來接收和轉(zhuǎn)發(fā)消息。

import socket


def udp_server(host='127.0.0.1', port=12345):
    # 創(chuàng)建UDP套接字
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 綁定套接字到地址和端口
    server_socket.bind((host, port))
    print(f"UDP server up and listening at {host}:{port}")


    try:
        while True:
            # 接收客戶端消息
            message, client_address = server_socket.recvfrom(1024)
            print(f"Message from {client_address}: {message.decode()}")


            # 發(fā)送響應(yīng)消息
            server_socket.sendto(b'Got your message!', client_address)
    except KeyboardInterrupt:
        server_socket.close()
        print("
Server shutdown.")


if __name__ == "__main__":
    udp_server()

這段代碼將啟動(dòng)一個(gè)UDP服務(wù)器,它會(huì)監(jiān)聽本機(jī)的12345端口(你可以選擇任意未被占用的端口)。服務(wù)器會(huì)打印收到的消息,并向客戶端發(fā)送確認(rèn)消息。

創(chuàng)建UDP客戶端

接下來,我們創(chuàng)建客戶端代碼,它將發(fā)送消息到UDP服務(wù)器,并接收服務(wù)器的響應(yīng)。

import socket


def udp_client(server_host='127.0.0.1', server_port=12345):
    # 創(chuàng)建UDP套接字
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


    try:
        while True:
            # 輸入要發(fā)送的消息
            message = input("Enter message to send: ")
            if message == "exit":
                break


            # 發(fā)送消息到服務(wù)器
            client_socket.sendto(message.encode(), (server_host, server_port))


            # 接收服務(wù)器響應(yīng)
            response, _ = client_socket.recvfrom(1024)
            print(f"Server response: {response.decode()}")
    finally:
        client_socket.close()
        print("Client shutdown.")


if __name__ == "__main__":
    udp_client()

在客戶端程序中,用戶被提示輸入消息。每條消息都會(huì)編碼為字節(jié)流后發(fā)送到服務(wù)器。接著,客戶端等待服務(wù)器的響應(yīng)并打印它。

運(yùn)行聊天程序

要運(yùn)行你的聊天程序,首先在一個(gè)終端窗口啟動(dòng)服務(wù)器:

python udp_server.py

然后,在另一個(gè)終端窗口啟動(dòng)客戶端:

python udp_client.py

現(xiàn)在,你可以在客戶端窗口輸入消息并查看服務(wù)器的響應(yīng)了。記得,你可以在不同的機(jī)器上運(yùn)行服務(wù)器和客戶端,只要它們?cè)谕粋€(gè)網(wǎng)絡(luò)中。

結(jié)論

恭喜你,你現(xiàn)在已經(jīng)有了一個(gè)工作中的UDP聊天程序。雖然這個(gè)程序非常簡(jiǎn)單,但它涵蓋了網(wǎng)絡(luò)編程的一些基本概念,為你繼續(xù)探索更復(fù)雜的網(wǎng)絡(luò)應(yīng)用提供了基礎(chǔ)。隨著你的探索,你可能會(huì)想要添加更多功能,比如多線程以支持多個(gè)客戶端,或者引入錯(cuò)誤處理來應(yīng)對(duì)網(wǎng)絡(luò)異常。

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8700

    瀏覽量

    84531
  • UDP
    UDP
    +關(guān)注

    關(guān)注

    0

    文章

    317

    瀏覽量

    33801
  • 網(wǎng)絡(luò)編程
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    10012
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84069

原文標(biāo)題:你會(huì)搭建一個(gè)UDP簡(jiǎn)易聊天程序嗎?

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于labview的tcp/ip聊天

    `相關(guān)課程推薦:《8周LabVIEW視覺項(xiàng)目編程實(shí)戰(zhàn)特訓(xùn)營》 這個(gè)程序是在一個(gè)國外論壇看到的 好久之前的主要是通過LabVIEW的tcp/ip做的一個(gè)簡(jiǎn)易聊天室包括服務(wù)端和客戶端的VI如圖效果大家
    發(fā)表于 11-24 15:28

    labview聊天程序

    Llabview聊天程序哈哈哈哈哈哈哈
    發(fā)表于 08-29 20:27

    PC與PC的聊天程序

    本帖最后由 eehome 于 2013-1-5 10:01 編輯 新的聊天程序
    發(fā)表于 09-07 07:48

    如何利用ESP32和Ubuntu搭建UDP通信系統(tǒng)?

    如何利用ESP32和Ubuntu搭建UDP通信系統(tǒng)?
    發(fā)表于 01-20 06:09

    基于STM32F107的UDP服務(wù)器程序

    基于STM32F107的UDP服務(wù)器程序
    發(fā)表于 03-26 15:44 ?151次下載

    什么是udp攻擊?udp攻擊的基本原理是什么

    UDP淹沒攻擊是導(dǎo)致基于主機(jī)的服務(wù)拒絕攻擊的一種。UDP是一種無連接的協(xié)議,而且它不需要用任何程序建立連接來傳輸數(shù)據(jù)。當(dāng)攻擊者隨機(jī)地向受害系統(tǒng)的端口發(fā)送UDP數(shù)據(jù)包的時(shí)候,就可能發(fā)生了
    發(fā)表于 12-08 09:52 ?2.4w次閱讀

    如何制作CMD聊天程序

    《現(xiàn)在打開兩個(gè)程序,輸入您的名字,然后說些什么。繁榮!您剛剛制作了一個(gè)聊天程序。現(xiàn)在,您與其他人聊天所要做的就是與他們共享文件夾!共享文件夾。..右鍵單擊文件夾,然后按共享?,F(xiàn)在,指定
    的頭像 發(fā)表于 11-26 14:32 ?5627次閱讀
    如何制作CMD<b class='flag-5'>聊天</b><b class='flag-5'>程序</b>

    UDP通信簡(jiǎn)單示例程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是UDP通信簡(jiǎn)單示例程序免費(fèi)下載包括了:UDP發(fā)送端和UDP接收端(基于本計(jì)算機(jī),不同計(jì)算機(jī)之間的通信需要設(shè)置IP地址)
    發(fā)表于 10-25 08:00 ?26次下載
    <b class='flag-5'>UDP</b>通信簡(jiǎn)單示例<b class='flag-5'>程序</b>免費(fèi)下載

    使用UDP協(xié)議設(shè)計(jì)P2P模式聊天的資料和程序資料概述

    協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。UDP協(xié)議基本上是IP協(xié)議與上層協(xié)議的接口。UDP協(xié)議適用端口分別運(yùn)行在同一臺(tái)設(shè)備上的多個(gè)應(yīng)用程序。UDP協(xié)議的全稱是用戶數(shù)據(jù)報(bào)協(xié)議,在網(wǎng)絡(luò)
    發(fā)表于 11-28 16:23 ?4次下載
    使用<b class='flag-5'>UDP</b>協(xié)議設(shè)計(jì)P2P模式<b class='flag-5'>聊天</b>的資料和<b class='flag-5'>程序</b>資料概述

    UDP及TCP通信的程序設(shè)計(jì)和源代碼免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是UDP及TCP通信的程序設(shè)計(jì)和源代碼免費(fèi)下載。
    發(fā)表于 01-08 15:12 ?37次下載
    <b class='flag-5'>UDP</b>及TCP通信的<b class='flag-5'>程序</b>設(shè)計(jì)和源代碼免費(fèi)下載

    程序如何實(shí)現(xiàn)聊天功能?

    程序即時(shí)聊天功能。 為小程序接入企達(dá)小程序IM后,可以實(shí)現(xiàn)用戶消息即時(shí)提醒,當(dāng)有用戶發(fā)送消息,會(huì)像QQ一樣閃爍提醒,并彈窗提示客服人員進(jìn)行接待,有效避免因接待不及時(shí),而造成用戶流失。
    發(fā)表于 03-17 11:13 ?2418次閱讀

    如何使用java設(shè)計(jì)UDP協(xié)議網(wǎng)上聊天程序

    網(wǎng)絡(luò)資源。并且避免了服務(wù)器忙或與服務(wù)器無法連接時(shí),浪費(fèi)過多時(shí)間用于和服務(wù)器建立連接!因此,這個(gè)軟件是極具適應(yīng)性和實(shí)用性的即時(shí)通訊軟件!本次課程設(shè)計(jì)的目的是學(xué)習(xí)基于UDP協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)聊天程序,已達(dá)到學(xué)會(huì)面向無連接方式
    發(fā)表于 03-28 11:19 ?9次下載
    如何使用java設(shè)計(jì)<b class='flag-5'>UDP</b>協(xié)議網(wǎng)上<b class='flag-5'>聊天</b><b class='flag-5'>程序</b>

    嵌入式Linux應(yīng)用程序開發(fā)-(9)UDP網(wǎng)絡(luò)通信應(yīng)用程序UDP-Socket)

    基于UDP協(xié)議的網(wǎng)絡(luò)通信應(yīng)用程序UDP-Socket)前兩篇文章介紹了基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信應(yīng)用程序。嵌入式Linux應(yīng)用程序開發(fā)
    發(fā)表于 11-02 12:21 ?35次下載
    嵌入式Linux應(yīng)用<b class='flag-5'>程序</b>開發(fā)-(9)<b class='flag-5'>UDP</b>網(wǎng)絡(luò)通信應(yīng)用<b class='flag-5'>程序</b>(<b class='flag-5'>UDP</b>-Socket)

    #單片機(jī)網(wǎng)課作業(yè)課設(shè)#簡(jiǎn)易電子鐘PROTEUS電路和C語言程序搭建入門

    #單片機(jī)網(wǎng)課作業(yè)課設(shè)#簡(jiǎn)易電子鐘PROTEUS電路和C語言程序搭建入門主要功能介紹操作的視頻可見:建立完成后的電路文件和程序文件可見:步驟如下1.新建工程2.本電路中使用到的仿真器件3
    發(fā)表于 12-29 18:55 ?0次下載
    #單片機(jī)網(wǎng)課作業(yè)課設(shè)#<b class='flag-5'>簡(jiǎn)易</b>電子鐘PROTEUS電路和C語言<b class='flag-5'>程序</b><b class='flag-5'>搭建</b>入門

    Chirp PubNub聊天應(yīng)用程序

    電子發(fā)燒友網(wǎng)站提供《Chirp PubNub聊天應(yīng)用程序.zip》資料免費(fèi)下載
    發(fā)表于 06-13 10:50 ?0次下載
    Chirp PubNub<b class='flag-5'>聊天</b>應(yīng)用<b class='flag-5'>程序</b>