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


打赏

发表评论

邮箱地址不会被公开。 必填项已用*标注