如何在两个独立的程序中将两个套接字绑定到同一个端口?

时间:2017-03-18 00:43:51

标签: java python sockets server client

我有一个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);

1 个答案:

答案 0 :(得分:2)

你的代码所做的事对我来说没有意义。

IP地址+端口代表数据报通信的终点。如果两个应用程序能够绑定到同一个端点,那么哪个应用程序会收到发送到端点的数据包?其中之一?他们两个?

UDP不是多播协议....除非您绑定到多播IP地址。

根据代码中的提示(变量名称),我认为您正在尝试在同一主机上的两个应用程序之间设置消息传递。如果是这样,你应该这样做:

  • 应用程序A绑定到端口P1并将消息发送到端口P2
  • 应用程序B绑定到端口P2并将消息发送到端口P1。

应用程序A和B不需要绑定到同一个端点;即同一个港口......做我认为你想做的事。