alma kod bu bölümünde, 10 saniyelik bir zaman aşımı oluşturmak için gerekenDatagramSocket zaman aşımı ekleme -) (
datagram paketleri getack = Yeni datagram paketleri (gelen, incoming.length);
socket.receive (getack);
ben deyim durumunda bunun aşağı başka atlamak ve paket yeniden olurdu 10s ulaşırsa o kadar atlamak o 10s önce bir paket alırsa 10s için gelen paketler için listelenen için buna ihtiyacım var. Bu mümkün mü ve bunu nasıl yapabilirim ki bu konuda oldukça yeni.
private static void sendDATA() {
outgoing = new byte[512]; // Empty array
try {
ByteBuffer sDATA = ByteBuffer.allocate(516);
// 512 - 2 byte opcode, 2 byte block #, 512 data
DatagramPacket data = new DatagramPacket(outgoing, outgoing.length, InetAddress.getByName(clientip), clientport);
InputStream fis = new FileInputStream(new File(FILE));
int a;
int block = 1;
while((a = fis.read(outgoing,0,512)) != -1)
{
data.setLength(a);
sDATA.put((byte)3);
sDATA.put((byte)block);
sDATA.put(outgoing);
socket.send(data);
while(true) {
DatagramPacket getack = new DatagramPacket(incoming, incoming.length);
socket.receive(getack);
if(incoming[0] == 3 && incoming[1] == block) {
break;
} else {
socket.send(data);
}
}
}
} catch (Exception e) {
}
}
Hm ben o baktı ama demek gibi bu işe eğer ben merak ediyorum. Bu, 10'lu yaşlardan önce bir şey alındığında, zaman aşımına ulaşılıp ulaşılmadığı ve başka bir yere atlanıp atlanmadığı ilkesiyle çalışacak mı? –
Ayrıca bunu getack = DatagramPacket(); –
@kellax Gönderimime bir düzenleme yaptım. Almayı çağırmadan önce zaman aşımını ayarlamanız gerekir. – sebastian