UDP聊天器
3个功能 1.获取键盘数据,将其发送给对方 2.接受数据并显示 3.退出聊天系统
函数拆分 Send_msg() 发送信息 Recv_msg() 接受信息 main() 主入口
发送信息 input() Udp_socket_sendto(content.encode(),(ipaddr,int(port)))
接受信息 recv_data,recv_text = recvfrom(1024)
代码
'''
一。功能
1.发送信息
2.接受信息
3.退出系统
二。框架设计
1.发送信息 send_msg()
2.接受信息 recv_msg()
3.程序的主入口 main()
4.当程度独立运行的时候,才启动聊天器
三。实现步骤
1. 发送信息 send_msg()
1)定义变量 接受用户和输入的接收方的 IP地址
2)定义变量 接受用户和输入的接收方的 端口号
3)定义变量 接受用户和输入的接收方的 内容
4) 使用socket的sendto() 发送信息
2.接受信息 recv_msg()
1) 使用socket接收数据
2) 解码数据
3)输出显示
3. 主入口main()
1) 创建套接字
2) 绑定端口
3) 打印菜单
4) 接受用户输入的选项
5) 判断用户的选择,并调用对应的函数
'''
import socket
def send_msg(udp_socket):
'''发送信息的函数'''
ipaddr = input("请输入接收方的IP地址:\n")
if len(ipaddr) == 0:
ipaddr = "192.168.x.xx"
print("当前接收方默认设置为[%s]" % ipaddr)
port = input("请输入接收方的端口号:\n")
if len(port) == 0:
port = "8080"
print("当前接收方默认设置为[%s]" % port)
content = input("请输入要发送的内容:\n")
udp_socket.sendto(content.encode(), (ipaddr, int(port)))
def recv_msg(udp_socket):
'''接收信息的函数'''
recv_data, ip_port = udp_socket.recvfrom(1024)
recv_text = recv_data.decode()
print("接收到[%s]的消息:%s" % (str(ip_port), recv_text))
def main():
'''程序的主入口
'''
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind(("", 8080))
while True:
print("***********************************")
print("************ 1.发送信息 *************")
print("************ 2.接受信息 *************")
print("************ 3.退出系统 *************")
print("***********************************")
sel_num = int(input("请输入选项:\n"))
if sel_num == 1:
send_msg(udp_socket)
elif sel_num == 2:
recv_msg(udp_socket)
elif sel_num == 3:
print("系统正在退出中...")
print("系统退出完成!")
break
udp_socket.close()
if __name__ == '__main__':
main()
|