tôi cần phải tạo ra một thời gian chờ 10 giây trên phần này của mãThêm thời gian chờ để DatagramSocket - nhận()
DatagramPacket getack = new DatagramPacket (đến, incoming.length);
socket.receive (getack);
Tôi cần nó để liệt kê các gói dữ liệu đến 10s nếu nó nhận được gói trước 10 giây nó sẽ bỏ qua nếu câu lệnh trong trường hợp nó đạt đến 10 giây. Điều này có thể và làm thế nào tôi có thể làm điều này iam khá mới này.
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 i nhìn đó, nhưng tôi đã tự hỏi nếu điều đó sẽ làm việc như tôi có nghĩa. Điều này sẽ làm việc trong nguyên tắc mà nếu một cái gì đó được nhận trước khi 10s bỏ qua để nếu và nếu thời gian chờ đạt được sau đó bỏ qua cho người khác? –
Ngoài ra tôi đặt nó trước hoặc sau getack = DatagramPacket(); –
@kellax Tôi đã chỉnh sửa bài đăng của mình. Bạn phải đặt thời gian chờ trước khi gọi điện. – sebastian