2017-03-18 12 views
0

我有一個server.java和一個client.python文件。但是,當我嘗試以下操作時,我得到一個「[Errno 10013]嘗試以訪問權限的方式禁止訪問套接字」錯誤。有沒有解決的辦法?這是爲什麼發生?
client.py如何將兩個套接字綁定到兩個單獨程序的相同端口?

sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 
sockRecv = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 
sock.bind((socket.gethostname(),4000)) 
sockRecv.bind((socket.gethostname(),4000 + 1)) 

server.java

recvSocket = new DatagramSocket(4000); 
sendSocket = new DatagramSocket(4000 + 1); 
+0

它們都不綁定到相同的端口。重新思考它,以便一個是服務器,另一個是客戶端。服務器綁定到端口,另一端連接到端口。 – RobertB

回答

2

你的代碼是做沒有意義,我。

IP地址+端口表示數據報通信的端點。如果兩個應用程序能夠綁定到相同的端點,那麼哪個應用程序會收到發送到端點的數據包?其中之一?兩個都?

UDP不是多播協議....除非您綁定到多播IP地址。


基於您的代碼中的提示(變量的名稱)我認爲您試圖在同一主機上的兩個應用程序之間設置消息傳遞。如果是這樣,你應該這樣做:

  • 應用程序A綁定到端口P1和發送消息到端口P2
  • 應用B綁定到端口P2和將消息發送到端口P1。

應用程序A和B不需要綁定到相同的終點;即同一個端口...做我認爲你正在嘗試做的事情。

相關問題