gpt4 book ai didi

java - 如何将两个套接字绑定(bind)到两个单独程序上的同一端口?

转载 作者:行者123 更新时间:2023-12-02 02:57:28 25 4
gpt4 key购买 nike

我有一个 server.java 和一个 client.python 文件。但是,当我尝试以下操作时,出现“[Errno 10013] 尝试以访问权限禁止的方式访问套接字”错误。有没有解决的办法?为什么会发生这种情况?
客户端.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))

服务器.java

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

最佳答案

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

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

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

<小时/>

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

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

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

关于java - 如何将两个套接字绑定(bind)到两个单独程序上的同一端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42869166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com