2013-12-10 3 views
0

Скажем, у меня есть сервер, подключенный ко многим клиентам. Когда один клиент отправляет пакет на сервер, сервер пересылает пакет всем другим клиентам, кроме тех, где он отправляется. Сервер хранит список сокетов соседних клиентов (т. Е. Объект ArrayList из Socket) и сокет, который принят и назначен сервером, называется clientSocket. Я хочу пройти через arraylist и сравнить каждый из сокетов с clientSocket, чтобы убедиться, что пакет не будет перенаправлен на оригинальный клиент. Можно ли просто использовать clientSocket.equals (neighseSocket) для проверки? Или мне нужно извлечь IP-адрес и сравнить на основе этого? Я использую java-сокет. Благодаря!java socket equals метод

+0

Вы можете добавить код, в котором вы создаете свои объекты, и где вы проверяете равенство. Я бы посмотрел документацию на этом классе, чтобы узнать, делает ли метод то, что вам нужно. Вероятно, он наследует метод класса 'Object', и в этом случае он просто эквивалентен использованию оператора' == ', и это достаточно хорошо, если они являются одинаковыми объектами. –

ответ

1

Во-первых, я думаю, вы имеете в виду ! clientSocket.equals(neighborSocket). Предполагая, что это так, я думаю, вы можете (и должны) использовать clientSocket != neighborSocket.

1

Вам все равно, если сокеты логически равны в некотором роде. Вы заботитесь, если они идентичны. Поэтому вы должны использовать ==.

0

Кажется, древнерусская нить, добавляя мой 2 цента, если кто-то достигает здесь наследует реализацию Google java.net.Socket составляет от объекта, то ниже равна реализация предмета

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

Таким образом, в случае Гнезда equals = (==).

Смежные вопросы