javasocketequals方法

javasocketequals方法,java,sockets,networking,Java,Sockets,Networking,假设我有一个连接到许多客户端的服务器。当一个客户机向服务器发送数据包时,服务器将把数据包转发给所有其他客户机,但发送数据包的客户机除外。服务器保存一个相邻客户端的套接字列表(即套接字对象的ArrayList),服务器接受并分配的套接字称为clientSocket。我想遍历arraylist并将每个套接字与clientSocket进行比较,以确保数据包不会转发到原始客户端。我可以简单地使用clientSocket.equals(nextorsocket)来检查吗?或者我必须提取IP地址并基于此进行

假设我有一个连接到许多客户端的服务器。当一个客户机向服务器发送数据包时,服务器将把数据包转发给所有其他客户机,但发送数据包的客户机除外。服务器保存一个相邻客户端的套接字列表(即套接字对象的ArrayList),服务器接受并分配的套接字称为clientSocket。我想遍历arraylist并将每个套接字与clientSocket进行比较,以确保数据包不会转发到原始客户端。我可以简单地使用clientSocket.equals(nextorsocket)来检查吗?或者我必须提取IP地址并基于此进行比较?我正在使用java套接字。谢谢

首先,我想你的意思是
!clientSocket.equals(neighborSocket)
。假设是这样,我认为您可以(也应该)使用
clientSocket!=neighborSocket

您不在乎套接字在某种程度上是否在逻辑上相等。你在乎它们是否相同。因此,您应该使用==。

似乎是一个旧线程,如果有人通过google java.net到达这里,请加上我的2美分。Socket实现从Object继承equals,下面是Object的equals实现

     public boolean equals(Object obj) {
         return (this == obj);
     }

因此,对于Socket equals=(==)。

可以在创建对象和检查相等性的位置添加代码。我会检查该类的文档,看看该方法是否满足您的需要。它可能从
对象
类继承了该方法,在这种情况下,它只相当于使用
=
操作符,如果它们是相同的对象,这就足够了。