基于udp协议的聊天小程序 - Python

Posted 帕森与加瓦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于udp协议的聊天小程序 - Python相关的知识,希望对你有一定的参考价值。

需求说明

基于udp协议的聊天小程序:

  1. 输入发送方的端口号

  2. 输入本机接受信息时要绑定的端口号

  3. 输入要发送的消息

可给别人发送消息,同时也可以接受别人发来的消息。

实现源码

# -*- coding: utf-8 -*-
# __author : Demon
# date : 1/19/18 4:34 PM

# 能收也能发
from threading import *
from socket import *
import socket


def recvData():
   udpSocket.bind(("", recvPort))
   while True:
       recvInfo = udpSocket.recvfrom(1024)
       print("\r>>>%s\n<<<" % recvInfo[0].decode("utf-8"), end="")

def sendData():
   while True:
       msg = input("<<<")
       udpSocket.sendto(msg.encode("utf-8"), (ipAddr, sendPort))

udpSocket = socket.socket(AF_INET, SOCK_DGRAM)
ipAddr = None
sendPort = None
recvPort = None
def main():
   global sendPort
   global recvPort
   global ipAddr
   ipAddr = input("请输入要发送的ip地址: ")
   sendPort = int(input("请输入要发送的端口号: "))
   recvPort = int(input("请输入本机要绑定的端口号: "))
   tr = Thread(target = recvData)
   tr.start()

   ts = Thread(target = sendData)
   ts.start()

   tr.join()
   ts.join()
   udpSocket.close()

if __name__ == '__main__':
   main()

代码说明

  1. \r 表示打印时,先清除原有的输入

  2. 代码采用utf-8编码,要注意发送与接收时要采用相同的编码与解码方式
    效果演示(演示效果为自己和自己聊天…)


属于自己的皮球

以上是关于基于udp协议的聊天小程序 - Python的主要内容,如果未能解决你的问题,请参考以下文章

基于UDP协议的聊天室(java实现)

基于UDP协议简单聊天

C++开发的基于UDP协议的聊天工具

Java网络编程基于UDP的聊天通信

使用python实现一个hello/hi的简单的网络聊天程序

UDP实现群聊聊天室