import socket
class UDP_ltq(object):
def __init__(self, bddk):
self.hw = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # socket套接字
self.hw.bind(("", bddk)) # 绑定端口
def ym(self):
"""打印页面"""
print("*" * 24)
print("*" * 4 + "\t①发送信息\t" + "*" * 4)
print("*" * 4 + "\t②接收信息\t" + "*" * 4)
print("*" * 4 + "\t③退出信息\t" + "*" * 4)
print("*" * 24)
def fs(self):
"""发送数据"""
jsf_ip = input("请输入接收方IP地址:")
if len(jsf_ip)==0:
jsf_ip=socket.gethostbyname(socket.gethostname()) #获取本机ip
print("已自动填写本机IP地址")
jsf_dk = input("请输入接收方端口号:")
nr = input("请输入要发送的内容:")
self.hw.sendto(nr.encode("GBK"), (jsf_ip, int(jsf_dk)))
print("发送成功!")
def js(self):
"""接收数据"""
js_xx, js_ip = self.hw.recvfrom(2048)
print("接收到IP地址为:", js_ip[0], "端口为:", js_ip[1], "发送的信息>>>>", js_xx.decode("GBK"))
def gb(self):
"""关闭套接字"""
self.hw.close()
@staticmethod
def main():
dk = int(input("请绑定本机端口(1024-65535):"))
if 1024 <= dk <= 65535:
print("成功绑定端口>>>", dk)
my = UDP_ltq(dk)
while True:
my.ym()
xz = input("请选择功能:")
if xz == "1":
my.fs()
elif xz == "2":
my.js()
elif xz == "3":
my.gb()
break
else:
print("输入非法,请重新输入!")
print("退出成功!")
else:
print("绑定端口失败,程序退出!")
if __name__ == '__main__':
UDP_ltq.main()
运行结果——————