from socket import *
from threading import Thread
# 定义一个类,用来接数据
class RecvData(Thread):
def __init__(self,udp_socket):
super().__init__()
self.udp_socket = udp_socket
def run(self):
self.recv_data()
def recv_data(self):
# 循环接收
while True:
recv = self.udp_socket.recvfrom(1024)
# 打印信息
print('>>:%s:%s' % (str(recv[1]),recv[0].decode('gb2312')))
print("<<:")
# 定义一个类用来发数据
class SendData(Thread):
def __init__(self,udp_socket,target_ip,target_port):
super().__init__()
self.udp_socket = udp_socket
self.target_ip = target_ip
self.target_port = target_port
def run(self):
self.send_data()
def send_data(self):
while True:
sendInfo = input('<<:')
self.udp_socket.sendto(sendInfo.encode('gb2312'),(self.target_ip,self.target_port))
# 主程序入口
class QQchat(object):
def start(self):
# 创建套接字
udp_socket = socket(AF_INET,SOCK_DGRAM)
# 绑定端口号
udp_socket.bind(('',9988))
# 提示用户输入信息
target_ip = input('请输入对方的IP地址:')
target_port = int(input('请输入对方的端口号:'))
#调用线程
tr = RecvData(udp_socket)
ts = SendData(udp_socket,target_ip,target_port)
tr.start()
ts.start()
ts.join()
if __name__ == "__main__":
QQchat().start()
打赏
如果您觉得不错,请打赏作者吧~