Я пытаюсь реализовать шлюз, который получает команду от Клиента и выполняет его. Если Gateway получит команду SOPEN | 127.0.0.5 | 12998 | 5, он откроет канал (сокет) для сервера, у которого есть номер 127.0.0.5, и переадресует все сообщения, полученные от клиента на этот сервер. , например, если шлюз принимает сообщение MSG | 127.0.0.1 | 12998 | 127.0.0.3 | 12897 | blablabla Если канал открыт, он отправит blablabla на сервер, и если нет, он не сделает этого. Моя проблема в том, что если клиент с IP-адресом X открывает канал, другой клиент с IP-адресом Y также может использовать этот канал. Шлюз usnig многопоточен, каждый клиент работает в одном потоке, так как я могу проверить, есть ли у другого клиента уже открытый канал на сервере?Обмен переменной в многопоточном
public static void main(String args[]) {
try {
DatagramSocket serverSocket = new DatagramSocket(12890);;
while (true) {
ChildServer cServer = new ChildServer(serverSocket);
cServer.start();
}
} catch (IOException ex) {
System.out.println(ex);
}
Класс ChildServer
public void run() {
while(true)
{
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
try
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
socket.receive(receivePacket);
String sentence = new String(receivePacket.getData());
System.out.println("RECEIVED:// " + sentence);
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
} catch (IOException e) {}