由于UDP通信不是面向连接的,且双方都可以利用套接字进行收发信息
import socket
def send_msg(udp_socket):
dest_ip = input("请输入你的IP:")
dest_port = int(input("请输入你的端口:"))
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" % (recv_data[1], recv_data[0].decode("gbk")))
def main():
#创建UDP套接字
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#绑定到固定的端口上面
udp_socket.bind(("",7788))
while True:
#开始发送信息
send_msg(udp_socket)
#开始接受信息
recv_msg(udp_socket)
if __name__ == "__main__":
main()
缺陷不足:目前没有使用多进程的方式进行编写,同一时刻只能做到收或者发信息。UDP套接字本质上全双工的,因此可以同时进行收和发。此外对于一些代码的异常捕捉这个没有进行,而在实际运行的时候是会有各种的异常。