1. 程式人生 > >UDP聊天器專案

UDP聊天器專案

由於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套接字本質上全雙工的,因此可以同時進行收和發。此外對於一些程式碼的異常捕捉這個沒有進行,而在實際執行的時候是會有各種的異常。