做一个Udp聊天室
2018-12-12 本文已影响0人
GhostintheCode
做一个Udp聊天室
准备工作
首先下一个网络调试助手,mac的长这个样子:
image
乌班图的长成这个样子:
image
windows的差不了太多,上网搜一下吧。
观察上面你就能看到,都有几个共同点。
image
红色箭头从上往下,依次是:
你要发的目标地址,目标地址的目标端口,你只有在发送的端口,写上8080,这个网络调试助手才能接收到。(端口是分给每个软件的,或者说进程的。)
目标IP其实就是你本机的ip地址,端口号设置为7788,不设置当然也是可以的。那样系统就会分配一个端口给你。
那么问题来了,这么看自己的ip呢,mac就在终端输入ifconfig,linux也是这个命令。windows,cmd之后黑框输入ipconfig就会出来。
image
本地ip一般不需要你设置,端口需要设置。点击开始绑定,就建立连接了。
结果如下:
image
image
代码如下:
import socket
def send_msg(udp_socket):
"""发送消息"""
dest_ip = input("输入ip:")
dest_port = int(input("输入port:"))
send_data = input("输入内容:")
udp_socket.sendto(send_data.encode("utf-8"),(dest_ip,dest_port))
def recv_msg(udp_socket):
"""接受信息"""
recv_data = udp_socket.recvfrom(1024)
print("%s : %s" % (str(recv_data[1]),recv_data[0 ].decode("utf-8")))
def main():
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udp_socket.bind(("",7788))
while True:
print("Udp聊天器")
print("1.发送消息")
print("2.接受消息")
print("0.退出功能")
op = input("请输入功能")
if "1" == op:
send_msg(udp_socket)
elif "2" == op:
recv_msg(udp_socket)
elif "0" == op:
break
else:
print("输入有误")
if __name__ == '__main__':
main()