Udp.Connect dizeleri kullanarak dize komutlarını aktarımı yapan küçük bir program geliştiriyorum. Belirli bir dizenin tam olarak alınmamasına rağmen gönderdiğim doğru dizeler doğru alındı. sorunu olan taraf veya alıcı taraf. Doğru olarak alınan dizeye örnek: "connect 123.123.1.1" Doğru şekilde alınmayan dize: "a/name/123.123.1.1" Bu alındığında aldığım: "a/name/123." göndermek için kodu: ulasmasindanJava datagramsocket eksik iletiyi alır
public void sendToAll(String massage) {
//send massage to all clients
byte[] sendData = new byte[1500];
//clients is a linked list
for (int i = 0; i < clients.size(); i++) {
String ip = clients.get(i).ip;
sendData = massage.getBytes();
try {
InetAddress IPAddress = InetAddress.getByName(ip);
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 11222);
clientSocket.send(sendPacket);
} catch (Exception e) {
}
}
}
kodu: Şu anda sorunun sebebini bilmiyoruz rağmen
byte[] receiveData = new byte[1500];
while (true) {
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String massage = new String(receivePacket.getData());
//operations for other commands
if (massage.startsWith("a/")) {
String[] info = massage.split("/");
//operations for this command
}
}
Çok teşekkür ederiz. Bu işe yaradı. – Omar
havalı. yine de neden daha önce böyle çalıştığını merak ediyor. Kısaltılmış değil, aşırı uzun bir dize olmalı, inanıyorum. –