利用Python实现多线程聊天功能

#-*- coding:utf-8 -*-
from threading import Thread
from socket import *
#1.实现接收消息
def recvDate():
    while True:
        recvInfo = udpSocket.recvfrom(1024)
        print("\r\n>>%s:%s"%(str(recvInfo[1]),recvInfo[0].decode("gb2312")))
        print("<<")

#2.实现发送消息
def sendDate():
    while True:
        sendInfo = input("<<")
        udpSocket.sendto(sendInfo.encode("gb2312"),(destIp,destPort))

udpSocket = None
destIp = ""
destPort = 0

def main():
    #改变全局变量时才加global
    global udpSocket
    global destIp
    global destPort

    udpSocket = socket(AF_INET, SOCK_DGRAM)


    destIp = input("请输入目的ip:")
    destPort = int(input("请输入目的端口:"))
    localPort = int(input("请输入本程序的端口号:")) 
    udpSocket.bind(("",localPort))  #绑定端口号
    re = Thread(target = recvDate)  #线程1
    rh = Thread(target = sendDate)  #线程2

    re.start()
    rh.start()

    re.join() #等待至线程中止
    rh.join()

if __name__ == "__main__":
    main()

 

转载于:https://www.cnblogs.com/pythonClub/p/10252068.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值