3.2、代码实现

import socket
def sent_message(udp_socket):

"""发送消息"""

# 2、让用户输入对方的IP和端口号

dest_ip = input("请输入对方的ip:")

try:

dest_port = input("请输入对方的port:")

except:

print("请输入正确的端口号")

# 3、从键盘获取要发送的数据

send_data = input("请输入要发送的内容:")

# 4、用套接字发送内容

udp_socket.sendto(send_data.encode('utf-8'),(dest_ip,dest_port))

def receive_message(udp_socket):

"""接收消息"""

# 2、使用 udp_socket 套接字就接收数据,接收内容(参数是允许接收的最大内容)

receive_data = udp_socket.recvfrom(1024)

# 3、接收的内容分为两个部分:

# 一部分是:对方发送的内容

# 另一部分是:对方的本地信息

receive_content = receive_data[0].decode('utf-8') # 存储接收的数据

receive_localAddr = receive_data[1] # 对方的本地信息

print("%s:%s"%(receive_content,receive_localAddr))

def main():

"""主函数:聊天神器"""

# 1、创建udp套接字

udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

# 2、绑定一个本地的信息

local_addr = ("",7777)
udp_socket.bind(local_addr) # 必须绑定自己电脑的ip和port,其他的电脑不行

# 3、功能选择

print("欢迎使用UDP聊天神器")

# 用循环来处理事情

while True:
print("1:发送消息\n2:接收消息")
input_str = input("请输入选择的功能:")
if input_str == "1":

# 发送数据

sent_message(udp_socket)
elif input_str == "2":

# 接收数据

receive_message(udp_socket)
elif input_str == "0":

# 退出程序

break
else:
print("请输入正确的功能")

# 4、关闭套接字

udp_socket.close()
if __name__ == "__main__":
main()

提示:以上的程序如果选择了接收数据功能,并且此时没有数据,程序会堵塞在这,那么怎样才能让这个程序收发数据一起进行呢?后面多任务知识之后就解决