Делаю чат на DatagramSocket
, написал пару функций
1) sendPacket()
– для отправки обратно пакетов с сообщениями;
2) Compare()
– получая новый пакет от какого-либо пользователя, я добавляю его в базу рассылки, сравниваю есть ли уже пользователь в моей базе и если нету, то добавляю.
public void sendPacket(DatagramPacket packetReceived) { try { Compare(packetReceived); for(int i = 0; i <= counter; i++){ DatagramSocket socketToUsers; DatagramPacket packet = new DatagramPacket(packetReceived.getData(), packetReceived.getLength(), userList[i], packetReceived.getPort()); socketToUsers = new DatagramSocket(); socketToUsers.send(packet); } } catch (IOException ex) { System.out.println(ex.getMessage()); } } public void Compare(DatagramPacket tocheck){ InetAddress toCheck = tocheck.getAddress(); int result=0; for(int i=0; i<1000; i++){ if(userList[i] == toCheck){ result = 1; break; } } if(result != 1){ userList[counter]=toCheck; counter++; } }
Я знаю, что мой сервер успешно получает от пользователей пакеты, но когда я их подаю полученный пакет в функцию, получаю ошибку “null address || null buffer”.
DatagramPacket pack=new DatagramPacket(buf,buf.length); while (true) { srvsocket.receive(pack); String str=new String(pack.getData(),0,pack.getLength()); sendPacket(pack); System.out.println(str); } }