【发布时间】:2024-01-15 00:12:01
【问题描述】:
我试图在我的服务器中同时实现 TCP 和 UDP。我可以接受来自客户端的 TCP 或 UDP 端口连接。
例如,我想让代码在一个程序中接受 TCP 和 UDP:
# create a socket
sockTCP = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #TCP
sockUDP = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
# server address to connect to
server_addressTCP = ('localhost', tcp_port)
server_addressUDP = ('localhost', udp_port)
# bind socket to adress and port number
sockTCP.bind(server_addressTCP)
sockUDP.bind(server_addressUDP)
# wait for connections (clients)
print("Waiting for connections...")
print(" ")
sockTCP.listen(20)
request = ''
while True:
#TCP
client_sock, client_addr = sockTCP.accept()
data, addr = client_sock.recvfrom(1024)
#UDP
udp_data, udp_addr = sockUDP.recvfrom(1024)
# DO SOMETHING WITH DATA.........
client_sock.close()
【问题讨论】:
-
你的问题是?
-
没有 UDP 连接这样的东西,因此也没有接受一个这样的东西。
-
查看
selectors模块(或仅使用select)。它们可以用作代码中的信号来接受新的 TCP 连接或接收 UDP 数据报
标签: python sockets tcp network-programming udp