Vâng, không có gì đảm bảo rằng bạn sẽ không tìm thấy FFD9 trong một hình ảnh jpeg. Cách tốt nhất bạn có thể tìm thấy kết thúc của một hình ảnh jpeg là phân tích nó. Mỗi điểm đánh dấu, ngoại trừ FFD0 đến FFD9 và FF01 (dành riêng), được theo sau bởi một chỉ số độ dài sẽ cung cấp cho bạn độ dài của đoạn nhãn đó, bao gồm chỉ số độ dài chứ không phải điểm đánh dấu. FF00 không phải là điểm đánh dấu, nhưng với mục đích của bạn, bạn có thể coi nó là điểm đánh dấu không có chỉ số độ dài.
Trình chỉ định độ dài dài hai byte và đó là phần cuối lớn. Vì vậy, những gì bạn sẽ làm là tìm kiếm FF, và nếu byte sau đây không phải là một trong 0x00, 0x01 hoặc 0xD0-0xD8, bạn đọc độ dài specifier và bỏ qua về phía trước trong dòng miễn là chiều dài specifier nói trừ hai byte.
Ngoài ra, mỗi điểm đánh dấu có thể được đệm vào đầu bằng bất kỳ số lượng FF nào.
Khi bạn truy cập FFD9, bạn đang ở cuối luồng.
Tất nhiên bạn có thể đọc từng dòng một từ, tìm kiếm FF nếu bạn muốn biểu diễn nhưng đó là một bài tập cho người đọc. ;-)
"Đang gửi" bằng giao thức nào? Giao thức của bạn có biết khi một tệp kết thúc tự động không? –
Tại sao không gửi chiều dài của hình ảnh trước? – Kornel
Sử dụng giao thức. –