打算為基於廣播的UDP聊天室做一個UI介面,並且可以隨時切換埠來做到切換頻道的效果,但在接收封包的部分遇到了問題。
VScode報錯:
in recv
recv_socket.bind(('', port))
OSError: [WinError 10022] 提供了一個不正確的引數。
程式碼:
import tkinter as tk
from socket import socket, AF_INET, SOCK_DGRAM, SOL_SOCKET, SO_REUSEADDR, SO_BROADCAST
from time import sleep
from threading import Thread
#發送封包
def send(event=None):
entry = send_entry.get()
send_entry.delete(0, "end")
port = int(channel_entry.get())
sendSocket = socket(AF_INET, SOCK_DGRAM)
sendSocket.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
sendSocket.sendto(entry.encode("utf-8"), ('255.255.255.255', port))
#接收器
recv_socket = socket(AF_INET, SOCK_DGRAM)
recv_socket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
recv_socket.setsockopt(SOL_SO