服務器擁有公共IP,客戶端位於NAT後面。服務器如何通過qt將udp發送數據到nat後面的客戶端?
客戶端如何通過qd與udp進行通信?
客戶端會先發送一些數據給服務器,然後服務器怎麼回覆客戶端?
當前的代碼是這樣的:
服務器:
self.udpSocketGet = QtNetwork.QUdpSocket()
self.udpSocketGet.bind(QtNetwork.QHostAddress.LocalHost, serverPort)
self.udpSocketGet.readyRead.connect(self.receive)
def receive(self):
while self.udpSocketGet.hasPendingDatagrams():
size = self.udpSocketGet.pendingDatagramSize()
if size > 0:
data, senderAddr, senderPort = self.udpSocketGet.readDatagram(size)
客戶端:
def sentToServer(self,data):
udpSocketSend = QtNetwork.QUdpSocket()
udpSocketSend.writeDatagram(data.encode('utf-8'), serverAddress, serverPort)
我讀過一些基本理論,這個問題比udp hole punching要容易很多,我知道server可以發送數據給** senderAddr:senderPort **,唯一的問題是客戶端怎麼可能接收到數據,哪個端口應該客戶端綁定? – Hunger